对比新文件 |
| | |
| | | import request from '/@/utils/request'; |
| | | |
| | | export function fireApplyApi() { |
| | | return { |
| | | // 动火申请 |
| | | postFireApply: (data: object) => { |
| | | return request({ |
| | | url: import.meta.env.VITE_API_URL + `/work/apply/hot`, |
| | | method: 'post', |
| | | data: data |
| | | }); |
| | | } |
| | | }; |
| | | } |
| | |
| | | meta: { |
| | | title: '双重预防首页' |
| | | } |
| | | }, |
| | | { |
| | | path: '/warningScreen', |
| | | name: 'warningScreen', |
| | | component: () => import('/@/views/riskWarningSys/warningBigScreen/index.vue'), |
| | | meta: { |
| | | title: '预警预报' |
| | | } |
| | | } |
| | | ]; |
| | |
| | | <div class="item-head"> |
| | | <span>隐患整改情况</span> |
| | | </div> |
| | | <div id="riskFix"></div> |
| | | <div class="riskFix" :id="riskFixId"></div> |
| | | </div> |
| | | <div class="table-item"> |
| | | <div class="item-head"> |
| | |
| | | <div class="item-head"> |
| | | <span>隐患等级分布</span> |
| | | </div> |
| | | <div id="riskLevel"></div> |
| | | <div class="riskLevel" :id="riskLevelId"></div> |
| | | </div> |
| | | </div> |
| | | </el-scrollbar> |
| | |
| | | classGroupList: [], |
| | | inspectPointAllList: [] |
| | | }); |
| | | const riskFixId = ref("eChartFix" + Date.now() + Math.random()) |
| | | const riskLevelId = ref("eChartLe" + Date.now() + Math.random()) |
| | | |
| | | // 页面载入时执行方法 |
| | | onMounted(() => { |
| | |
| | | |
| | | // 隐患整改情况 |
| | | const initRiskFix =()=>{ |
| | | var dom = document.getElementById('riskFix'); |
| | | var myChart = echarts.init(dom, null, { |
| | | const dom = document.getElementById(riskFixId.value); |
| | | let myChart = echarts.init(dom, null, { |
| | | renderer: 'canvas', |
| | | useDirtyRect: false |
| | | }); |
| | | var app = {}; |
| | | let app = {}; |
| | | |
| | | var option; |
| | | let option; |
| | | |
| | | option = { |
| | | tooltip: { |
| | |
| | | |
| | | // 隐患整改情况 |
| | | const initRiskLevel =()=>{ |
| | | var dom = document.getElementById('riskLevel'); |
| | | var myChart = echarts.init(dom, null, { |
| | | const dom = document.getElementById(riskLevelId.value); |
| | | let myChart = echarts.init(dom, null, { |
| | | renderer: 'canvas', |
| | | useDirtyRect: false |
| | | }); |
| | | var app = {}; |
| | | let app = {}; |
| | | |
| | | var option; |
| | | let option; |
| | | |
| | | option = { |
| | | tooltip: { |
| | |
| | | Refresh, |
| | | Plus, |
| | | router, |
| | | riskFixId, |
| | | riskLevelId, |
| | | toRiskEve, |
| | | toRiskStatus, |
| | | toRevice, |
| | |
| | | } |
| | | } |
| | | } |
| | | #riskFix{ |
| | | .riskFix{ |
| | | height: 300px; |
| | | } |
| | | #riskLevel{ |
| | | .riskLevel{ |
| | | height: 300px |
| | | } |
| | | .deviceTable{ |
| | |
| | | height: 24px; |
| | | border-radius: 50%; |
| | | position: absolute; |
| | | border: 1px solid rgba(0, 225, 255, 0.6); |
| | | border: 1px solid rgba(0, 114, 255, 0.6); |
| | | top: -12px; |
| | | left: 10px; |
| | | |
| | |
| | | -moz-border-radius: 50%; |
| | | border: 1px solid #0072ff; |
| | | border-radius: 50%; |
| | | background-color: #00e1ff; |
| | | background-color: #0072ff; |
| | | z-index: 2; |
| | | } |
| | | .pulse { |
| | |
| | | height: 48px; |
| | | left: -13px; |
| | | top: -13px; |
| | | border: 1px solid #00e1ff; |
| | | border: 1px solid #0072ff; |
| | | -webkit-border-radius: 50%; |
| | | -moz-border-radius: 50%; |
| | | border-radius: 50%; |
| | |
| | | -webkit-animation-iteration-count: infinite; |
| | | -moz-animation-iteration-count: infinite; |
| | | animation-iteration-count: infinite; |
| | | box-shadow: 1px 1px 30px #00e1ff; |
| | | box-shadow: 1px 1px 30px #0072ff; |
| | | } |
| | | .pulse1 { |
| | | position: absolute; |
| | |
| | | height: 48px; |
| | | left: -13px; |
| | | top: -13px; |
| | | border: 1px solid #00e1ff; |
| | | border: 1px solid #0072ff; |
| | | -webkit-border-radius: 50%; |
| | | -moz-border-radius: 50%; |
| | | border-radius: 50%; |
| | |
| | | -webkit-animation-iteration-count: infinite; |
| | | -moz-animation-iteration-count: infinite; |
| | | animation-iteration-count: infinite; |
| | | box-shadow: 1px 1px 30px #00e1ff; |
| | | box-shadow: 1px 1px 30px #0072ff; |
| | | } |
| | | } |
| | | & > div { |
| | |
| | | height: 24px; |
| | | border-radius: 50%; |
| | | position: absolute; |
| | | border: 1px solid rgba(0, 225, 255, 0.6); |
| | | border: 1px solid rgba(0, 114, 255, 0.6); |
| | | top: -12px; |
| | | left: 10px; |
| | | |
| | |
| | | top: 5px; |
| | | -webkit-border-radius: 50%; |
| | | -moz-border-radius: 50%; |
| | | border: 1px solid #0072ff; |
| | | border: 1px solid #0072FF; |
| | | border-radius: 50%; |
| | | background-color: #00e1ff; |
| | | background-color: #0072FF; |
| | | z-index: 2; |
| | | } |
| | | .pulse { |
| | |
| | | height: 48px; |
| | | left: -13px; |
| | | top: -13px; |
| | | border: 1px solid #00e1ff; |
| | | border: 1px solid #0072FF; |
| | | -webkit-border-radius: 50%; |
| | | -moz-border-radius: 50%; |
| | | border-radius: 50%; |
| | |
| | | -webkit-animation-iteration-count: infinite; |
| | | -moz-animation-iteration-count: infinite; |
| | | animation-iteration-count: infinite; |
| | | box-shadow: 1px 1px 30px #00e1ff; |
| | | box-shadow: 1px 1px 30px #0072FF; |
| | | } |
| | | .pulse1 { |
| | | position: absolute; |
| | |
| | | height: 48px; |
| | | left: -13px; |
| | | top: -13px; |
| | | border: 1px solid #00e1ff; |
| | | border: 1px solid #0072FF; |
| | | -webkit-border-radius: 50%; |
| | | -moz-border-radius: 50%; |
| | | border-radius: 50%; |
| | |
| | | -webkit-animation-iteration-count: infinite; |
| | | -moz-animation-iteration-count: infinite; |
| | | animation-iteration-count: infinite; |
| | | box-shadow: 1px 1px 30px #00e1ff; |
| | | box-shadow: 1px 1px 30px #0072FF; |
| | | } |
| | | } |
| | | & > div { |
| | |
| | | height: 24px; |
| | | border-radius: 50%; |
| | | position: absolute; |
| | | border: 1px solid rgba(0, 225, 255, 0.6); |
| | | border: 1px solid rgba(0, 114, 255, 0.6); |
| | | top: -12px; |
| | | left: 2px; |
| | | |
| | |
| | | -moz-border-radius: 50%; |
| | | border: 1px solid #0072ff; |
| | | border-radius: 50%; |
| | | background-color: #00e1ff; |
| | | background-color: #0072ff; |
| | | z-index: 2; |
| | | } |
| | | .pulse { |
| | |
| | | height: 48px; |
| | | left: -13px; |
| | | top: -13px; |
| | | border: 1px solid #00e1ff; |
| | | border: 1px solid #0072ff; |
| | | -webkit-border-radius: 50%; |
| | | -moz-border-radius: 50%; |
| | | border-radius: 50%; |
| | |
| | | -webkit-animation-iteration-count: infinite; |
| | | -moz-animation-iteration-count: infinite; |
| | | animation-iteration-count: infinite; |
| | | box-shadow: 1px 1px 30px #00e1ff; |
| | | box-shadow: 1px 1px 30px #0072ff; |
| | | } |
| | | .pulse1 { |
| | | position: absolute; |
| | |
| | | height: 48px; |
| | | left: -13px; |
| | | top: -13px; |
| | | border: 1px solid #00e1ff; |
| | | border: 1px solid #0072ff; |
| | | -webkit-border-radius: 50%; |
| | | -moz-border-radius: 50%; |
| | | border-radius: 50%; |
| | |
| | | -webkit-animation-iteration-count: infinite; |
| | | -moz-animation-iteration-count: infinite; |
| | | animation-iteration-count: infinite; |
| | | box-shadow: 1px 1px 30px #00e1ff; |
| | | box-shadow: 1px 1px 30px #0072ff; |
| | | } |
| | | } |
| | | & > div { |
对比新文件 |
| | |
| | | <template> |
| | | <div class="container"> |
| | | <div class="header-content"> |
| | | <div class="logo"> |
| | | <img src="../../../assets/warningScreen/logo_dark.png" alt="" /> |
| | | </div> |
| | | <div class="title">风险预警预报平台</div> |
| | | <div class="title-right"> |
| | | <!-- <img src="themeStyle.skinIcon" class="qiehuan" @click="changeTheme" />--> |
| | | <span class="datetime">{{currentTime}}</span> |
| | | <div class="btns"> |
| | | <div class="fullbtn" @click="onScreenfullClick"> |
| | | <div class="toFull"> |
| | | <i class="iconfont" :title="isScreenfull ? $t('message.user.title6') : $t('message.user.title5')" :class="!isScreenfull ? 'icon-fullscreen' : 'icon-tuichuquanping'"></i> |
| | | </div> |
| | | <div>全屏</div> |
| | | </div> |
| | | <div class="backBtn" @click="goBack()"> |
| | | <img src="../../../assets/loginPage/back-icon.png"/> |
| | | <div>退出</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="main-content"> |
| | | <div class="main-left"> |
| | | <div class="left-top"> |
| | | |
| | | </div> |
| | | <div class="left-mid"> |
| | | |
| | | </div> |
| | | <div class="left-bottom"> |
| | | |
| | | </div> |
| | | </div> |
| | | <div class="main-middle"> |
| | | <div class="mid-top"> |
| | | |
| | | </div> |
| | | <div class="mid-bottom"> |
| | | <div class="mid-bot-l"> |
| | | |
| | | </div> |
| | | <div class="mid-bot-m"> |
| | | |
| | | </div> |
| | | <div class="mid-bot-r"> |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="main-right"> |
| | | <div class="right-top"> |
| | | |
| | | </div> |
| | | <div class="right-mid"> |
| | | |
| | | </div> |
| | | <div class="right-bottom"> |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script lang="ts"> |
| | | import screenfull from 'screenfull'; |
| | | import { toRefs, reactive, ref, onMounted } from 'vue'; |
| | | import { ElTable } from 'element-plus'; |
| | | import { FormInstance, FormRules, ElMessage } from 'element-plus'; |
| | | import { safetyRiskEventApi } from '/@/api/doublePreventSystem/safetyRiskEvent/index.ts'; |
| | | import { useRouter } from 'vue-router'; |
| | | import {hiddenReportApi} from "/@/api/doublePreventSystem/report"; |
| | | import { productionDeviceApi } from '/@/api/doublePreventSystem/productionDevice/index.ts'; |
| | | import * as echarts from 'echarts/core'; |
| | | import {TooltipComponent, TooltipComponentOption, LegendComponent, LegendComponentOption} from 'echarts/components'; |
| | | import {PieChart, PieSeriesOption} from 'echarts/charts'; |
| | | import {LabelLayout} from 'echarts/features'; |
| | | import {CanvasRenderer} from 'echarts/renderers'; |
| | | echarts.use([TooltipComponent, LegendComponent, PieChart, CanvasRenderer, LabelLayout]); |
| | | // 定义接口来定义对象的类型 |
| | | interface stateType { |
| | | isScreenfull: boolean; |
| | | currentTime: string |
| | | } |
| | | export default { |
| | | name: 'warningScreen', |
| | | components: {}, |
| | | setup() { |
| | | const router = useRouter(); |
| | | const state = reactive<stateType>({ |
| | | isScreenfull: false, |
| | | currentTime: '' |
| | | }); |
| | | |
| | | // 页面载入时执行方法 |
| | | onMounted(() => { |
| | | setInterval(() => { |
| | | state.currentTime = new Date().toLocaleString(); |
| | | console.log(state.currentTime) |
| | | }, 1000); |
| | | }); |
| | | |
| | | // 全屏 |
| | | const onScreenfullClick = () => { |
| | | if (!screenfull.isEnabled) { |
| | | ElMessage.warning('暂不不支持全屏'); |
| | | return false; |
| | | } |
| | | screenfull.toggle(); |
| | | screenfull.on('change', () => { |
| | | if (screenfull.isFullscreen) { |
| | | state.isScreenfull = true; |
| | | } else { |
| | | state.isScreenfull = false; |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | // 返回上一页 |
| | | const goBack = () => { |
| | | window.history.go(-1); |
| | | }; |
| | | |
| | | // 隐患状态列表 |
| | | // const getDeviceRecord = async () => { |
| | | // const data = { pageSize: state.pageSize, pageIndex: state.pageIndex}; |
| | | // let res = await productionDeviceApi().getProductionDeviceList(data) |
| | | // if (res.data.code === '200'){ |
| | | // state.deviceData = res.data.data |
| | | // } else { |
| | | // ElMessage({ |
| | | // type: 'warning', |
| | | // message: res.data.msg |
| | | // }); |
| | | // } |
| | | // }; |
| | | |
| | | // 隐患整改情况 |
| | | // const initRiskFix =()=>{ |
| | | // var dom = document.getElementById('riskFix'); |
| | | // var myChart = echarts.init(dom, null, { |
| | | // renderer: 'canvas', |
| | | // useDirtyRect: false |
| | | // }); |
| | | // var app = {}; |
| | | // |
| | | // var option; |
| | | // |
| | | // option = { |
| | | // tooltip: { |
| | | // trigger: 'item' |
| | | // }, |
| | | // legend: { |
| | | // bottom: '5%', |
| | | // left: 'center' |
| | | // }, |
| | | // series: [ |
| | | // { |
| | | // name: 'Access From', |
| | | // type: 'pie', |
| | | // radius: ['35%', '60%'], |
| | | // avoidLabelOverlap: false, |
| | | // itemStyle: { |
| | | // borderRadius: 6, |
| | | // borderColor: '#fff', |
| | | // borderWidth: 2 |
| | | // }, |
| | | // label: { |
| | | // alignTo: 'labelLine', |
| | | // formatter: '{name|{b}}\n{value|{c}}', |
| | | // minMargin: 5, |
| | | // edgeDistance: 5, |
| | | // lineHeight: 15, |
| | | // rich: { |
| | | // name: { |
| | | // fontSize: 14, |
| | | // color: '#666' |
| | | // } |
| | | // } |
| | | // }, |
| | | // labelLine: { |
| | | // length: 15, |
| | | // maxSurfaceAngle: 80 |
| | | // }, |
| | | // emphasis: { |
| | | // label: { |
| | | // show: true, |
| | | // fontSize: '40', |
| | | // fontWeight: 'bold' |
| | | // } |
| | | // }, |
| | | // data: [ |
| | | // { value: 1048, name: '整改中' }, |
| | | // { value: 735, name: '待验收' }, |
| | | // { value: 580, name: '延期整改' }, |
| | | // { value: 484, name: '超期未整改' }, |
| | | // { value: 300, name: '已验收' } |
| | | // ], |
| | | // center: ['50%','40%'] |
| | | // } |
| | | // ] |
| | | // }; |
| | | // |
| | | // if (option && typeof option === 'object') { |
| | | // myChart.setOption(option); |
| | | // } |
| | | // |
| | | // window.addEventListener('resize', myChart.resize); |
| | | // } |
| | | |
| | | return { |
| | | router, |
| | | onScreenfullClick, |
| | | goBack, |
| | | ...toRefs(state) |
| | | }; |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | $homeNavLengh: 8; |
| | | |
| | | @media screen and (min-width: 1366px) { |
| | | |
| | | } |
| | | |
| | | @media screen and (min-width: 1024px) and (max-width: 1366px){ |
| | | |
| | | } |
| | | |
| | | @media screen and (max-width: 1024px) { |
| | | |
| | | } |
| | | .container { |
| | | width: 100%; |
| | | height: 100%; |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | background: url('../../../assets/warningScreen/riskprocast.jpg') no-repeat center; |
| | | background-size: 100% 100%; |
| | | color: #11FEEE; |
| | | |
| | | .header-content { |
| | | width: 100%; |
| | | height: 80px; |
| | | padding: 0 20px; |
| | | font-size: 20px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-around; |
| | | z-index: 9; |
| | | |
| | | .logo { |
| | | width: 27%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | img { |
| | | height: 35px; |
| | | width: 128px; |
| | | } |
| | | } |
| | | .title { |
| | | width: 46%; |
| | | font-size: 26px; |
| | | font-weight: bolder; |
| | | line-height: 80px; |
| | | text-align: center; |
| | | letter-spacing: 2px; |
| | | } |
| | | |
| | | .title-right { |
| | | width: 27%; |
| | | height: 90px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-around; |
| | | font-size: 15px; |
| | | padding-left: 30px; |
| | | |
| | | .datetime { |
| | | color: #11FEEE; |
| | | } |
| | | .btns{ |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | &>div{ |
| | | display: flex; |
| | | align-items: center; |
| | | align-items: center; |
| | | font-size: 15px; |
| | | margin-right: 20px; |
| | | |
| | | img{ |
| | | width: 16px; |
| | | height: auto; |
| | | } |
| | | div{ |
| | | margin-left: 6px; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .main-content{ |
| | | width: 100%; |
| | | height: 100%; |
| | | padding: 20px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | |
| | | .main-left{ |
| | | width: calc(25% - 10px); |
| | | height: 100%; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: space-between; |
| | | align-items: flex-start; |
| | | |
| | | .left-top{ |
| | | width: 100%; |
| | | height: calc((100%/3) - (40px/3)); |
| | | } |
| | | .left-mid{ |
| | | width: 100%; |
| | | height: calc((100%/3) - (40px/3)); |
| | | } |
| | | .left-bottom{ |
| | | width: 100%; |
| | | height: calc((100%/3) - (40px/3)); |
| | | } |
| | | } |
| | | .main-middle{ |
| | | width: calc(50% - 20px); |
| | | height: 100%; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: space-between; |
| | | align-items: flex-start; |
| | | |
| | | .mid-top{ |
| | | width: 100%; |
| | | height: calc((200%/3) - (80px/3) + 20px); |
| | | } |
| | | |
| | | .mid-bottom{ |
| | | display: flex; |
| | | width: 100%; |
| | | height: calc(100% - (200%/3) + (80px/3) - 40px); |
| | | justify-content: space-between; |
| | | |
| | | &>div { |
| | | position: relative; |
| | | width: calc((100% - 40px)/3); |
| | | border-radius: 8px; |
| | | overflow: hidden; |
| | | |
| | | .chart-tit { |
| | | position: absolute; |
| | | left: 20px; |
| | | top: 20px; |
| | | font-weight: 700; |
| | | z-index: 3; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .main-right{ |
| | | width: calc(25% - 10px); |
| | | height: 100%; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: space-between; |
| | | align-items: flex-start; |
| | | |
| | | .right-top{ |
| | | width: 100%; |
| | | height: calc((100%/3) - (40px/3)); |
| | | } |
| | | .right-mid{ |
| | | width: 100%; |
| | | height: calc((100%/3) - (40px/3)); |
| | | } |
| | | .right-bottom{ |
| | | width: 100%; |
| | | height: calc((100%/3) - (40px/3)); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .el-input { |
| | | width: 100% !important; |
| | | } |
| | | .el-date-editor::v-deep { |
| | | width: 100%; |
| | | } |
| | | .el-select { |
| | | width: 100%; |
| | | } |
| | | </style> |
| | |
| | | </div> |
| | | </el-form> |
| | | <div class="applyBtn"> |
| | | <el-col :span="24" class="submitBtn"> |
| | | <el-button type="primary" size="large" plain @click="handleApply(ruleFormRef2)">发起申请</el-button> |
| | | </el-col> |
| | | <el-button type="primary" size="large" plain @click="handleApply(ruleFormRef2)">发起申请</el-button> |
| | | </div> |
| | | <el-dialog v-model="dialogAddWorker" title="添加作业人"> |
| | | <el-form :model="addWorkerForm" label-width="120px" :rules="addWorkerRules" ref='ruleFormRef3'> |
| | |
| | | .homeCard{ |
| | | width: 100%; |
| | | padding: 20px; |
| | | box-sizing: border-box; |
| | | background: #fff; |
| | | border-radius: 4px; |
| | | margin-bottom: 20px; |
| | | |
| | | &:last-of-type{ |
| | | margin-bottom: 100px; |
| | | } |
| | | } |
| | | .applyBtn{ |
| | | position: absolute; |
| | | width: 100%; |
| | | padding: 20px; |
| | | background: #fff; |
| | | bottom: 0; |
| | | left: 0; |
| | | height: 80px; |
| | | z-index: 999; |
| | | margin-bottom: 0; |
| | | border-radius: 0; |
| | | z-index: 5; |
| | | box-shadow: 0 -3px 8px rgba(150,150,150,.1); |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | .el-row{ |
| | | margin-bottom: 20px; |
| | |
| | | } |
| | | .el-cascader{ |
| | | width: 100% !important; |
| | | } |
| | | .submitBtn{ |
| | | display: flex; |
| | | justify-content: center; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <div class="home-container"> |
| | | <div style="height: 100%"> |
| | | <el-form :model="form" label-width="150px" :rules="applyRules" ref="ruleFormRef2"> |
| | | <!-- <blind-panel-form :bpForm="form.addForm" ref="additionalForm"></blind-panel-form>--> |
| | | <!-- <cut-line-form :clForm="form.addForm" ref="additionalForm"></cut-line-form>--> |
| | | <!-- <dirt-work-form :dwForm="form.addForm" ref="additionalForm"></dirt-work-form>--> |
| | | <fire-work-form :fwForm="form.addForm" ref="additionalForm"></fire-work-form> |
| | | <!-- <hang-load-form :hlForm="form.addForm" ref="additionalForm"></hang-load-form>--> |
| | | <!-- <high-work-form :hwForm="form.addForm" ref="additionalForm"></high-work-form>--> |
| | | <!-- <limited-space-form :lsForm="form.addForm" ref="additionalForm"></limited-space-form>--> |
| | | <!-- <temp-elect-form :teForm="form.addForm" ref="additionalForm"></temp-elect-form>--> |
| | | <div> |
| | | <div class="homeCard"> |
| | | <el-row> |
| | | <el-col :span="3"><el-button type="primary" size="default" @click="dialogAddWorker = true">添加作业人</el-button></el-col> |
| | | <el-col :span="21"> |
| | | <el-table :data="form.workerList" style="width: 100%"> |
| | | <el-table-column type="index" label="序号" width="100"/> |
| | | <el-table-column prop="worker" label="作业人"/> |
| | | <el-table-column prop="role" label="作业人角色" width="180"/> |
| | | <el-table-column prop="unit" label="所属单位" width="180" /> |
| | | <el-table-column prop="certificate" label="证书名称" width="180" /> |
| | | <el-table-column prop="certificateId" label="证书号" /> |
| | | <el-table-column fixed="right" label="操作" align="center" width="180"> |
| | | <template #default="scope"> |
| | | <el-button link type="danger" size="small" @click="deleteRow(scope.$index)">删除</el-button> |
| | | <el-col :span="12"> |
| | | <el-form-item label="作业人" prop="operatorUid"> |
| | | <el-input |
| | | v-model="form.operatorUid" |
| | | placeholder="请输入" |
| | | class="input-with-select" |
| | | > |
| | | <template #append> |
| | | <el-button :icon="Search" /> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | </div> |
| | | </el-form> |
| | | <div class="applyBtn"> |
| | | <el-button type="primary" size="large" plain @click="handleApply(ruleFormRef2)">发起申请</el-button> |
| | |
| | | import { Search } from '@element-plus/icons-vue' |
| | | import { ElMessage } from 'element-plus' |
| | | import type { FormInstance, FormRules } from 'element-plus' |
| | | let global: any = { |
| | | homeChartOne: null, |
| | | homeChartTwo: null, |
| | | homeCharThree: null, |
| | | dispose: [null, '', undefined], |
| | | }; |
| | | import { fireApplyApi } from '/@/api/specialWorkSystem/workApply/fire'; |
| | | |
| | | |
| | | interface stateType { |
| | | homeOne: Array <type> |
| | | } |
| | | interface type { |
| | | |
| | | form: Object |
| | | } |
| | | export default defineComponent({ |
| | | name: 'workApplyForm', |
| | | components: { |
| | | fireWorkForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workApplyManage/workApplyForm/components/fireWorkForm.vue')), |
| | | limitedSpaceForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workApplyManage/workApplyForm/components/limitedSpaceForm.vue')), |
| | | hangLoadForm: defineAsyncComponent(()=> import('/@/views/specialWorkSystem/workApplyManage/workApplyForm/components/hangLoadForm.vue')), |
| | | dirtWorkForm: defineAsyncComponent(()=> import('/@/views/specialWorkSystem/workApplyManage/workApplyForm/components/dirtWorkForm.vue')), |
| | | cutLineForm: defineAsyncComponent(()=> import('/@/views/specialWorkSystem/workApplyManage/workApplyForm/components/cutLineForm.vue')), |
| | | highWorkForm: defineAsyncComponent(()=> import('/@/views/specialWorkSystem/workApplyManage/workApplyForm/components/highWorkForm.vue')), |
| | | tempElectForm: defineAsyncComponent(()=> import('/@/views/specialWorkSystem/workApplyManage/workApplyForm/components/tempElectForm.vue')), |
| | | blindPanelForm: defineAsyncComponent(()=> import('/@/views/specialWorkSystem/workApplyManage/workApplyForm/components/blindPanelForm.vue')) |
| | | }, |
| | | name: 'workTicket', |
| | | components: {}, |
| | | setup() { |
| | | const userInfo = useUserInfo() |
| | | const { userInfos } = storeToRefs(userInfo); |
| | | const state = reactive<stateType>({ |
| | | homeOne:[{id:1,name:'安全基础信息系统'},{id:2,name:'双重预防系统'},{id:3,name:'系统2'},{id:4,name:'系统3'},{id:5,name:'系统4'}], |
| | | form: { |
| | | operatorUid: [], |
| | | workType: null, |
| | | workLevel: null, |
| | | workContent: '', |
| | | workLocation: '', |
| | | workDetail:{ |
| | | hotMethod: '', |
| | | otherSpecialWork: [] |
| | | }, |
| | | expStartTime: '', |
| | | expEndTime: '' |
| | | }, |
| | | |
| | | }); |
| | | const form = reactive({ |
| | | addForm: {}, |
| | | workerList: [], |
| | | workLocation: '', |
| | | workTimeLine: '', |
| | | workContent: '', |
| | | workUnit: '', |
| | | responsor: '', |
| | | monitor: '', |
| | | workMonitor: '', |
| | | monitorStation: '', |
| | | workhouseLeader: '', |
| | | applyDate: '', |
| | | otherSpecialWorks: [], |
| | | protections: '', |
| | | saftyFile: {}, |
| | | safetyMan: '', |
| | | educated: '' |
| | | }) |
| | | const dialogAddWorker = ref(false) |
| | | const dialogAddFile = ref(false) |
| | | const addWorkerForm = ref({ |
| | |
| | | const ruleFormRef = ref<FormInstance>() |
| | | const ruleFormRef2 = ref<FormInstance>() |
| | | const ruleFormRef3 = ref<FormInstance>() |
| | | const applyRules = reactive<FormRules>({ |
| | | extraForm: [{type: 'object', required: true,message: '此处不能为空'}], |
| | | workLocation: [{required: true,message: '此处不能为空'}], |
| | | workTimeLine: [{required: true,message: '此处不能为空'}], |
| | | workContent: [{required: true,message: '此处不能为空'}], |
| | | workUnit: [{required: true,message: '此处不能为空'}], |
| | | responsor: [{required: true,message: '此处不能为空'}], |
| | | monitor: [{required: true,message: '此处不能为空'}], |
| | | workMonitor: [{required: true,message: '此处不能为空'}], |
| | | monitorStation: [{required: true,message: '此处不能为空'}], |
| | | workhouseLeader: [{required: true,message: '此处不能为空'}], |
| | | applyDate: [{required: true,message: '此处不能为空'}], |
| | | otherSpecialWorks: [{type: 'array', required: true,message: '此处不能为空'}], |
| | | protections: [{required: true,message: '此处不能为空'}], |
| | | safetyMan: [{required: true,message: '此处不能为空'}], |
| | | educated: [{required: true,message: '此处不能为空'}] |
| | | }) |
| | | const addWorkerRules = reactive<FormRules>({ |
| | | worker: [{required: true,message: '此处不能为空'}], |
| | | role: [{required: true,message: '此处不能为空'}], |
| | |
| | | additionalForm, |
| | | addWorkerRules, |
| | | saftyFileRules, |
| | | applyRules, |
| | | isValid, |
| | | handleApply, |
| | | cancleAddFile, |