| | |
| | | // }, |
| | | getMenuAdmin: () => { |
| | | return request({ |
| | | url: import.meta.env.VITE_API_URL + `/sys/console/menu/get/all`, |
| | | url: import.meta.env.VITE_API_URL + `/sys/menu/get/u`, |
| | | method: 'get' |
| | | }); |
| | | }, |
| | |
| | | */ |
| | | export function verifyPhone(val: string) { |
| | | // false: 手机号码不正确 |
| | | if (!/^((12[0-9])|(13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0|1,5-9]))\d{8}$/.test(val)) return false; |
| | | if (!/^((12[0-9])|(13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17([7-9]))|(18[0|1,5-9]))\d{8}$/.test(val)) return false; |
| | | // true: 手机号码正确 |
| | | else return true; |
| | | } |
| | |
| | | <div>{{item.siteType}}</div> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="w-25 m-color required">评估人</td> |
| | | <td class="w-75 m-color"> |
| | | <!-- <el-select style="width: 100%" :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.assessPerson" clearable filterable>--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in reportDialogState.allPersonList"--> |
| | | <!-- :key="item.id"--> |
| | | <!-- :value="item.id"--> |
| | | <!-- :label="item.personName"--> |
| | | <!-- ></el-option>--> |
| | | <!-- </el-select>--> |
| | | <el-input :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.assessPerson" placeholder="评估人" /> |
| | | </td> |
| | | <!-- <td class="w-25 m-color required">评估时间</td>--> |
| | | <!-- <td class="w-25 m-color">--> |
| | | <!-- <el-date-picker :disabled="reportDialogState.disabled" type="datetime" format="YYYY/MM/DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" v-model="reportDialogState.reportForm.assessTime" />--> |
| | | <!-- </td>--> |
| | | </tr> |
| | | |
| | | <tr class="m-color b-font" style="text-align: center">实验概况</tr> |
| | | <tr> |
| | |
| | | <tr> |
| | | <td class="m-color" style="width: 100%"> |
| | | <el-radio-group :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.assessLevel"> |
| | | <el-radio :label="1">低风险(一级)</el-radio> |
| | | <el-radio :label="2">一般风险(二级)</el-radio> |
| | | <el-radio :label="3">较大风险(三级)</el-radio> |
| | | <el-radio :label="4">重大风险(四级)</el-radio> |
| | | <el-radio :label="1">重大风险(一级)</el-radio> |
| | | <el-radio :label="2">较大风险(二级)</el-radio> |
| | | <el-radio :label="3">一般风险(三级)</el-radio> |
| | | <el-radio :label="4">低风险(四级)</el-radio> |
| | | </el-radio-group> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <el-input type="textarea" :autosize="{ minRows: 3}" :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.description" placeholder="评定依据(必填)" /> |
| | | </tr> |
| | | <tr> |
| | | <td class="w-25 m-color required">评估人</td> |
| | | <td class="w-75 m-color"> |
| | | <!-- <el-select style="width: 100%" :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.assessPerson" clearable filterable>--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in reportDialogState.allPersonList"--> |
| | | <!-- :key="item.id"--> |
| | | <!-- :value="item.id"--> |
| | | <!-- :label="item.personName"--> |
| | | <!-- ></el-option>--> |
| | | <!-- </el-select>--> |
| | | <el-input :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.assessPerson" placeholder="评估人" /> |
| | | </td> |
| | | <!-- <td class="w-25 m-color required">评估时间</td>--> |
| | | <!-- <td class="w-25 m-color">--> |
| | | <!-- <el-date-picker :disabled="reportDialogState.disabled" type="datetime" format="YYYY/MM/DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" v-model="reportDialogState.reportForm.assessTime" />--> |
| | | <!-- </td>--> |
| | | </tr> |
| | | <tr v-if="reportDialogState.reportForm.person?.length>0" class="m-color b-font" style="text-align: center">审批内容</tr> |
| | | <template v-if="reportDialogState.reportForm.person?.length>0" v-for="item in reportDialogState.reportForm.person"> |
| | | <tr> |
| | |
| | | <div>{{item.siteType}}</div> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="w-25 m-color required">评估人</td> |
| | | <td class="w-75 m-color"> |
| | | <!-- <el-select style="width: 100%" :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.assessPerson" clearable filterable>--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in reportDialogState.allPersonList"--> |
| | | <!-- :key="item.id"--> |
| | | <!-- :value="item.id"--> |
| | | <!-- :label="item.personName"--> |
| | | <!-- ></el-option>--> |
| | | <!-- </el-select>--> |
| | | <el-input :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.assessPerson" placeholder="评估人" /> |
| | | </td> |
| | | <!-- <td class="w-25 m-color required">评估时间</td>--> |
| | | <!-- <td class="w-25 m-color">--> |
| | | <!-- <el-date-picker :disabled="reportDialogState.disabled" type="datetime" format="YYYY/MM/DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" v-model="reportDialogState.reportForm.assessTime" />--> |
| | | <!-- </td>--> |
| | | </tr> |
| | | |
| | | <tr class="m-color b-font" style="text-align: center">实验概况</tr> |
| | | <tr> |
| | |
| | | <tr> |
| | | <td class="m-color" style="width: 100%"> |
| | | <el-radio-group :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.assessLevel"> |
| | | <el-radio :label="1">低风险(一级)</el-radio> |
| | | <el-radio :label="2">一般风险(二级)</el-radio> |
| | | <el-radio :label="3">较大风险(三级)</el-radio> |
| | | <el-radio :label="4">重大风险(四级)</el-radio> |
| | | <el-radio :label="1">重大风险(一级)</el-radio> |
| | | <el-radio :label="2">较大风险(二级)</el-radio> |
| | | <el-radio :label="3">一般风险(三级)</el-radio> |
| | | <el-radio :label="4">低风险(四级)</el-radio> |
| | | </el-radio-group> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <el-input type="textarea" :autosize="{ minRows: 3}" :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.description" placeholder="评定依据(必填)" /> |
| | | </tr> |
| | | <tr> |
| | | <td class="w-25 m-color required">评估人</td> |
| | | <td class="w-75 m-color"> |
| | | <!-- <el-select style="width: 100%" :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.assessPerson" clearable filterable>--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in reportDialogState.allPersonList"--> |
| | | <!-- :key="item.id"--> |
| | | <!-- :value="item.id"--> |
| | | <!-- :label="item.personName"--> |
| | | <!-- ></el-option>--> |
| | | <!-- </el-select>--> |
| | | <el-input :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.assessPerson" placeholder="评估人" /> |
| | | </td> |
| | | <!-- <td class="w-25 m-color required">评估时间</td>--> |
| | | <!-- <td class="w-25 m-color">--> |
| | | <!-- <el-date-picker :disabled="reportDialogState.disabled" type="datetime" format="YYYY/MM/DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" v-model="reportDialogState.reportForm.assessTime" />--> |
| | | <!-- </td>--> |
| | | </tr> |
| | | <tr v-if="reportDialogState.reportForm.person?.length>0" class="m-color b-font" style="text-align: center">审批内容</tr> |
| | | <template v-if="reportDialogState.reportForm.person?.length>0" v-for="item in reportDialogState.reportForm.person"> |
| | | <tr> |
| | |
| | | } |
| | | } |
| | | } |
| | | .stepItem { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: flex-start; |
| | | margin-bottom: 30px; |
| | | margin-left: 30px; |
| | | padding-bottom: 30px; |
| | | border-left: 2px solid #ccc; |
| | | &:first-of-type { |
| | | margin-top: 30px; |
| | | } |
| | | &:last-of-type { |
| | | margin-bottom: 0; |
| | | border-left: none; |
| | | } |
| | | .stepNum { |
| | | width: 30px; |
| | | height: 30px; |
| | | border-radius: 15px; |
| | | box-sizing: border-box; |
| | | color: #333; |
| | | border: 1px solid #999; |
| | | line-height: 28px; |
| | | text-align: center; |
| | | margin-right: 10px; |
| | | margin-left: -16px; |
| | | margin-top: -30px; |
| | | } |
| | | .stepCard { |
| | | width: 100%; |
| | | margin-top: -30px; |
| | | |
| | | .box-card { |
| | | width: 100%; |
| | | &:deep(.el-card__header) { |
| | | padding: 10px 15px; |
| | | } |
| | | .card-header { |
| | | width: 100%; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | & > div:first-of-type { |
| | | margin-right: 80px; |
| | | font-size: 18px; |
| | | font-weight: bold; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | &:hover .card-header { |
| | | color: #0098f5; |
| | | } |
| | | &:hover .stepNum { |
| | | border: 2px solid #0098f5; |
| | | color: #0098f5; |
| | | } |
| | | } |
| | | |
| | | :deep(.el-date-editor) { |
| | | width: 100%; |
| | |
| | | <!-- <el-button type="primary" :icon="Refresh" size="default" />--> |
| | | </el-row> |
| | | <el-table ref="multipleTableRef" :data="identifyState.identifyData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }"> |
| | | <el-table-column type="index" label="序号"/> |
| | | <el-table-column prop="assessPlanName" label="评估计划名称"/> |
| | | <el-table-column prop="identificationMethod" label="辨识方法" show-overflow-tooltip> |
| | | <template #default="scope"> |
| | |
| | | margin-right: 20px; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .stepItem { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: flex-start; |
| | | margin-bottom: 30px; |
| | | margin-left: 30px; |
| | | padding-bottom: 30px; |
| | | border-left: 2px solid #ccc; |
| | | &:first-of-type { |
| | | margin-top: 30px; |
| | | } |
| | | &:last-of-type { |
| | | margin-bottom: 0; |
| | | border-left: none; |
| | | } |
| | | .stepNum { |
| | | width: 30px; |
| | | height: 30px; |
| | | border-radius: 15px; |
| | | box-sizing: border-box; |
| | | color: #333; |
| | | border: 1px solid #999; |
| | | line-height: 28px; |
| | | text-align: center; |
| | | margin-right: 10px; |
| | | margin-left: -16px; |
| | | margin-top: -30px; |
| | | } |
| | | .stepCard { |
| | | width: 100%; |
| | | margin-top: -30px; |
| | | |
| | | .box-card { |
| | | width: 100%; |
| | | &:deep(.el-card__header) { |
| | | padding: 10px 15px; |
| | | } |
| | | .card-header { |
| | | width: 100%; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | & > div:first-of-type { |
| | | margin-right: 80px; |
| | | font-size: 18px; |
| | | font-weight: bold; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | &:hover .card-header { |
| | | color: #0098f5; |
| | | } |
| | | &:hover .stepNum { |
| | | border: 2px solid #0098f5; |
| | | color: #0098f5; |
| | | } |
| | | } |
| | | |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> |
| | | <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20 valueSelect"> |
| | | <el-form-item label="辨识专家" prop="identificationUserId"> |
| | | <el-select :disabled="planDialogState.disabled" v-model="planDialogState.planForm.identificationUserId" style="width:100%" placeholder="负责人" clearable> |
| | | <el-option v-for="item in planDialogState.personList" :key="item.id" :label="item.realName" :value="item.id"></el-option> |
| | | <el-select :disabled="planDialogState.disabled" v-model="planDialogState.planForm.identificationUserId" style="width:100%" :teleported="false" placeholder="辨识专家" clearable> |
| | | <el-option v-for="item in planDialogState.bsExperts" :key="item.id" :label="item.realName" :value="item.id"> |
| | | <div class="valueTable"> |
| | | <div><div>姓名:</div><span>{{item.realName}}</span></div> |
| | | <div><div>专业:</div><span>{{item.userIdentities?.map(i=>i.userIdentity).join(',')}}</span></div> |
| | | </div> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> |
| | | <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20 valueSelect"> |
| | | <el-form-item label="评价专家" prop="evaluateUserId"> |
| | | <el-select :disabled="planDialogState.disabled" v-model="planDialogState.planForm.evaluateUserId" style="width:100%" placeholder="评价专家" clearable> |
| | | <el-option v-for="item in planDialogState.personList" :key="item.id" :label="item.realName" :value="item.id"></el-option> |
| | | <el-select :disabled="planDialogState.disabled" v-model="planDialogState.planForm.evaluateUserId" style="width:100%" :teleported="false" placeholder="评价专家" clearable> |
| | | <el-option v-for="item in planDialogState.pjExperts" :key="item.id" :label="item.realName" :value="item.id"> |
| | | <div class="valueTable"> |
| | | <div><div>姓名:</div><span>{{item.realName}}</span></div> |
| | | <div><div>专业:</div><span>{{item.userIdentities?.map(i=>i.userIdentity).join(',')}}</span></div> |
| | | </div> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | evaluateUserId: [{ required: true, message: '请选择评价专家', trigger: 'change' }], |
| | | }, |
| | | riskUnitList: [], |
| | | personList: [] |
| | | personList: [], |
| | | bsExperts: [], |
| | | pjExperts: [] |
| | | }) |
| | | |
| | | const showPlanDialog = (title: string, value: PlanType, riskUnitList: RiskUnitType [], personList: SystemPersonType []) => { |
| | | const showPlanDialog = (title: string, value: PlanType, riskUnitList: RiskUnitType [], personList: SystemPersonType [],bsExperts:[],pjExperts:[]) => { |
| | | planDialogState.planDialogVisible = true; |
| | | planDialogState.riskUnitList = riskUnitList; |
| | | planDialogState.personList = personList; |
| | | planDialogState.bsExperts = bsExperts; |
| | | planDialogState.pjExperts = pjExperts; |
| | | planDialogState.disabled = false |
| | | setTimeout(() => { |
| | | planFormRef.value.clearValidate(); |
| | |
| | | position: absolute !important; |
| | | top: 0 !important; |
| | | } |
| | | .valueSelect{ |
| | | ::v-deep(.el-popper){ |
| | | .el-select-dropdown__item{ |
| | | width: 100%; |
| | | height: auto; |
| | | white-space: normal; |
| | | word-break: break-all; |
| | | word-wrap: break-word; |
| | | overflow: auto; |
| | | padding: 10px 25px; |
| | | border-bottom: 1px solid #ccc; |
| | | |
| | | .valueTable{ |
| | | &>div{ |
| | | line-height: 1.5; |
| | | margin-bottom: 6px; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | div{ |
| | | color: #999; |
| | | } |
| | | |
| | | span{ |
| | | font-weight: bolder; |
| | | } |
| | | |
| | | &:last-of-type{ |
| | | margin-bottom: 0; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | evaluateMethodList: Array<Type> |
| | | riskUnitList: Array<RiskUnitType> |
| | | personList: Array<SystemPersonType>, |
| | | bsExperts: [], |
| | | pjExperts: [], |
| | | reSendTitle:string |
| | | reSendDialogVisible: boolean |
| | | reSendForm: { |
| | |
| | | }, |
| | | riskUnitList: Array<RiskUnitType> |
| | | personList: Array<SystemPersonType> |
| | | bsExperts: [] |
| | | pjExperts: [] |
| | | } |
| | |
| | | </div> |
| | | <plan-dialog ref="planDialogRef" @refresh="getPlanData"></plan-dialog> |
| | | |
| | | <el-dialog :title="planState.reSendTitle" v-model="planState.reSendDialogVisible" width="50%"> |
| | | <el-dialog class="chooseExpert" :title="planState.reSendTitle" v-model="planState.reSendDialogVisible" width="50%"> |
| | | <el-form ref="ruleFormRef" :rules="planState.rules" :model="planState.reSendForm" label-width="120px"> |
| | | <el-form-item v-if="planState.reSendTitle == '指派辨识专家'" label="选择辨识专家" prop="identificationUserId"> |
| | | <el-select v-model="planState.reSendForm.identificationUserId" style="width:100%" placeholder="辨识专家" clearable> |
| | | <el-option v-for="item in planState.personList" :key="item.id" :label="item.realName" :value="item.id"></el-option> |
| | | <el-form-item v-if="planState.reSendTitle == '指派辨识专家'" label="选择辨识专家" prop="identificationUserId" class="valueSelect"> |
| | | <el-select v-model="planState.reSendForm.identificationUserId" style="width:100%" :teleported="false" placeholder="辨识专家" clearable> |
| | | <el-option v-for="item in planState.bsExperts" :key="item.id" :label="item.realName" :value="item.id"> |
| | | <div class="valueTable"> |
| | | <div><div>姓名:</div><span>{{item.realName}}</span></div> |
| | | <div><div>专业:</div><span>{{item.userIdentities?.map(i=>i.userIdentity).join(',')}}</span></div> |
| | | </div> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item v-if="planState.reSendTitle == '指派评价专家'" label="选择评价专家" prop="evaluateUserId"> |
| | | <el-select v-model="planState.reSendForm.evaluateUserId" style="width:100%" placeholder="评价专家" clearable> |
| | | <el-option v-for="item in planState.personList" :key="item.id" :label="item.realName" :value="item.id"></el-option> |
| | | <el-form-item v-if="planState.reSendTitle == '指派评价专家'" label="选择评价专家" prop="evaluateUserId" class="valueSelect"> |
| | | <el-select v-model="planState.reSendForm.evaluateUserId" style="width:100%" :teleported="false" placeholder="评价专家" clearable> |
| | | <el-option v-for="item in planState.pjExperts" :key="item.id" :label="item.realName" :value="item.id"> |
| | | <div class="valueTable"> |
| | | <div><div>姓名:</div><span>{{item.realName}}</span></div> |
| | | <div><div>专业:</div><span>{{item.userIdentities?.map(i=>i.userIdentity).join(',')}}</span></div> |
| | | </div> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-form> |
| | |
| | | riskUnitList: [ |
| | | ], |
| | | personList: [], |
| | | bsExperts: [], |
| | | pjExperts: [], |
| | | identificationMethodList: [ |
| | | {id:1, name: 'PHA'}, |
| | | {id:2, name: 'JHA'}, |
| | |
| | | } |
| | | }; |
| | | |
| | | const getAllExperts = async () => { |
| | | let res = await userApi().getExpertsList({ |
| | | pageIndex: 1, |
| | | pageSize: 99999, |
| | | searchParams:{ |
| | | userIndentityId: null |
| | | } |
| | | }); |
| | | if (res.data.code === 100) { |
| | | const expertsList = res.data.data; |
| | | for(let i of expertsList){ |
| | | if(i.roles?.find(obj=>obj.roleId == 2)){ |
| | | planState.bsExperts.push(i) |
| | | } |
| | | if(i.roles?.find(obj=>obj.roleId == 3)){ |
| | | planState.pjExperts.push(i) |
| | | } |
| | | } |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: res.data.msg |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | const openPlanDialog = (title: string, value: PlanType) => { |
| | | planDialogRef.value.showPlanDialog(title, value, planState.riskUnitList, planState.personList); |
| | | planDialogRef.value.showPlanDialog(title, value, planState.riskUnitList, planState.personList,planState.bsExperts,planState.pjExperts); |
| | | }; |
| | | |
| | | const refuseIdentify = async(val: PlanType)=>{ |
| | |
| | | onMounted(() => { |
| | | getPlanData(); |
| | | getAllRiskUnitList(); |
| | | getAllExperts(); |
| | | getPersonList(); |
| | | planState.user = Number(userInfos.value.uid) |
| | | }) |
| | |
| | | |
| | | <style scoped lang="scss"> |
| | | $homeNavLengh: 8; |
| | | ::v-deep(.el-dialog){ |
| | | .el-dialog__body{ |
| | | overflow-y: visible !important; |
| | | overflow-x: visible !important; |
| | | } |
| | | } |
| | | |
| | | .home-container { |
| | | height: calc(100vh - 144px); |
| | | box-sizing: border-box; |
| | |
| | | } |
| | | } |
| | | } |
| | | .stepItem { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: flex-start; |
| | | margin-bottom: 30px; |
| | | margin-left: 30px; |
| | | padding-bottom: 30px; |
| | | border-left: 2px solid #ccc; |
| | | &:first-of-type { |
| | | margin-top: 30px; |
| | | } |
| | | &:last-of-type { |
| | | margin-bottom: 0; |
| | | border-left: none; |
| | | } |
| | | .stepNum { |
| | | width: 30px; |
| | | height: 30px; |
| | | border-radius: 15px; |
| | | box-sizing: border-box; |
| | | color: #333; |
| | | border: 1px solid #999; |
| | | line-height: 28px; |
| | | text-align: center; |
| | | margin-right: 10px; |
| | | margin-left: -16px; |
| | | margin-top: -30px; |
| | | } |
| | | .stepCard { |
| | | width: 100%; |
| | | margin-top: -30px; |
| | | |
| | | .box-card { |
| | | width: 100%; |
| | | &:deep(.el-card__header) { |
| | | padding: 10px 15px; |
| | | } |
| | | .card-header { |
| | | width: 100%; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | & > div:first-of-type { |
| | | margin-right: 80px; |
| | | font-size: 18px; |
| | | font-weight: bold; |
| | | } |
| | | } |
| | | .valueSelect{ |
| | | ::v-deep(.el-popper){ |
| | | .el-select-dropdown__item{ |
| | | width: 100%; |
| | | height: auto; |
| | | white-space: normal; |
| | | word-break: break-all; |
| | | word-wrap: break-word; |
| | | overflow: auto; |
| | | padding: 10px 25px; |
| | | border-bottom: 1px solid #ccc; |
| | | |
| | | .valueTable{ |
| | | &>div{ |
| | | line-height: 1.5; |
| | | margin-bottom: 6px; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | div{ |
| | | color: #999; |
| | | } |
| | | |
| | | span{ |
| | | font-weight: bolder; |
| | | } |
| | | |
| | | &:last-of-type{ |
| | | margin-bottom: 0; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | &:hover .card-header { |
| | | color: #0098f5; |
| | | } |
| | | &:hover .stepNum { |
| | | border: 2px solid #0098f5; |
| | | color: #0098f5; |
| | | } |
| | | } |
| | | } |
| | | |
| | | :deep(.el-date-editor) { |
| | | width: 100%; |
| | | } |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> |
| | | <el-form-item label="设备功率" prop="devicePower"> |
| | | <el-input v-model="equipmentDialogState.equipmentForm.devicePower" placeholder="设备功率" clearable class="input-length"></el-input> |
| | | <el-form-item label="额定功率" prop="devicePower"> |
| | | <el-input v-model="equipmentDialogState.equipmentForm.devicePower" placeholder="额定功率" clearable class="input-length"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> |
| | |
| | | equipmentFormRules: { |
| | | deviceCode: [{ required: true, message: '请填写设备编号', trigger: 'blur' }], |
| | | deviceName: [{ required: true, message: '请填写设备名称', trigger: 'blur' }], |
| | | devicePower: [{ required: true, message: '请填写设备功率', trigger: 'blur' }], |
| | | devicePower: [{ required: true, message: '请填写额定功率', trigger: 'blur' }], |
| | | deviceUnit: [{ required: true, message: '请选择计量单位', trigger: 'change' }], |
| | | deviceTypeId: [{ required: true, message: '请填写设备类型ID', trigger: 'blur' }], |
| | | deviceDesc: [{ required: true, message: '请填写设备型号', trigger: 'blur' }], |
| | |
| | | </el-input> |
| | | </div> |
| | | <div class="basic-line"> |
| | | <span>设备功率:</span> |
| | | <el-input v-model="equipmentState.searchQuery.devicePower" clearable filterable class="input-box" placeholder="设备功率"> |
| | | <span>额定功率:</span> |
| | | <el-input v-model="equipmentState.searchQuery.devicePower" clearable filterable class="input-box" placeholder="额定功率"> |
| | | </el-input> |
| | | </div> |
| | | <div class="basic-line"> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="deviceDesc" label="设备型号" /> |
| | | <el-table-column prop="devicePower" label="设备功率"> |
| | | <el-table-column prop="devicePower" label="额定功率"> |
| | | <template #default="scope"> |
| | | <span>{{scope.row.devicePower}}</span> |
| | | </template> |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> |
| | | <el-form-item label="是否是安全信息化系统 " prop="sisStatus"> |
| | | <el-form-item label="是否使用安全信息化系统" prop="sisStatus"> |
| | | <el-radio-group v-model="applyStartDialogState.applyStartForm.sisStatus"> |
| | | <el-radio :label="1">是</el-radio> |
| | | <el-radio :label="2">否</el-radio> |
| | |
| | | <td class="w-25 m-color required">负责人</td> |
| | | <td class="w-25 m-color"> |
| | | <el-form-item prop="liabilityUserId"> |
| | | <el-select style="width: 100%" disabled v-model="projectDialogState.projectForm.liabilityUserId" clearable filterable> |
| | | <el-option :key="userInfos.uid" :value="userInfos.uid" :label="userInfos.userName"></el-option> |
| | | </el-select> |
| | | <!-- <el-select style="width: 100%" v-model="projectDialogState.projectForm.liabilityUserId" clearable filterable @change="getLiabilityUserPhone($event)">--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in projectDialogState.systemPersonList"--> |
| | | <!-- :key="item.id"--> |
| | | <!-- :value="item.id"--> |
| | | <!-- :label="item.realName"--> |
| | | <!-- ></el-option>--> |
| | | <!-- </el-select>--> |
| | | <el-select style="width: 100%" disabled v-model="projectDialogState.projectForm.liabilityUserId" clearable filterable> |
| | | <el-option :key="userInfos.uid" :value="userInfos.uid" :label="userInfos.userName"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <!-- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.liabilityUserId"/>--> |
| | | </td> |
| | |
| | | const selectMaterialRef = ref() |
| | | const selectDangerRef = ref() |
| | | const selectEmergencyRef = ref() |
| | | const userInfo = useUserInfo(); |
| | | const { userInfos } = storeToRefs(userInfo); |
| | | const userInfo = useUserInfo() |
| | | const { userInfos } = storeToRefs(userInfo) |
| | | |
| | | const projectDialogState = reactive<ProjectDialogType>({ |
| | | title: '', |
| | |
| | | <tr> |
| | | <td class="w-16 m-color">设备名称</td> |
| | | <td class="w-16 m-color">编号</td> |
| | | <td class="w-16 m-color">设备功率</td> |
| | | <td class="w-16 m-color">额定功率</td> |
| | | <td class="w-16 m-color">是否特种</td> |
| | | <td class="w-16 m-color">设备数量</td> |
| | | <td class="w-16 m-color">操作</td> |
| | |
| | | <el-table-column prop="assessLevel" label="风险等级"> |
| | | <template #default="scope"> |
| | | <el-tag :type="scope.row.assessLevel == 4?'danger':scope.row.assessLevel == 3 || scope.row.assessLevel == 2?'warning':''"> |
| | | {{scope.row.assessLevel == 1?'低风险':scope.row.assessLevel == 2?'一般风险':scope.row.assessLevel == 3?'较大风险':scope.row.assessLevel == 4?'重大风险':'--'}} |
| | | {{scope.row.assessLevel == 1?'重大风险':scope.row.assessLevel == 2?'较大风险':scope.row.assessLevel == 3?'一般风险':scope.row.assessLevel == 4?'低风险':'--'}} |
| | | </el-tag> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> |
| | | <el-form-item label="是否是安全信息化系统 " prop="sisStatus"> |
| | | <el-form-item label="是否使用安全信息化系统" prop="sisStatus"> |
| | | <el-radio-group v-model="applyStartDialogState.applyStartForm.sisStatus"> |
| | | <el-radio :label="1">是</el-radio> |
| | | <el-radio :label="2">否</el-radio> |
| | |
| | | <td class="w-25 m-color required">负责人</td> |
| | | <td class="w-25 m-color"> |
| | | <el-form-item prop="liabilityUserId"> |
| | | <!-- <el-select style="width: 100%" v-model="projectDialogState.projectForm.liabilityUserId" clearable filterable @change="getLiabilityUserPhone($event)">--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in projectDialogState.systemPersonList"--> |
| | | <!-- :key="item.id"--> |
| | | <!-- :value="item.id"--> |
| | | <!-- :label="item.realName"--> |
| | | <!-- ></el-option>--> |
| | | <!-- </el-select>--> |
| | | <el-select style="width: 100%" disabled v-model="projectDialogState.projectForm.liabilityUserId" clearable filterable> |
| | | <el-option :key="userInfos.uid" :value="userInfos.uid" :label="userInfos.userName"></el-option> |
| | | </el-select> |
| | |
| | | projectDialogState.projectForm.liabilityUserPhone = data.phone |
| | | } |
| | | |
| | | const getSafeLiabilityUserPhone = (value: number)=>{ |
| | | const data = projectDialogState.allPersonList.find(item => item.id === value) as AllPersonListType |
| | | projectDialogState.projectForm.safeLiabilityUserPhone = data.phone |
| | | } |
| | | // const getSafeLiabilityUserPhone = (value: number)=>{ |
| | | // const data = projectDialogState.allPersonList.find(item => item.id === value) as AllPersonListType |
| | | // projectDialogState.projectForm.safeLiabilityUserPhone = data.phone |
| | | // } |
| | | |
| | | const showProjectDialog = (title: string, value: ProjectType, allRoomList: RoomType []) => { |
| | | projectDialogState.projectDialogVisible = true; |
| | |
| | | <tr> |
| | | <td class="w-16 m-color required">设备名称</td> |
| | | <td class="w-16 m-color">编号</td> |
| | | <td class="w-16 m-color">设备功率</td> |
| | | <td class="w-16 m-color">额定功率</td> |
| | | <td class="w-16 m-color">是否特种</td> |
| | | <td class="w-16 m-color required">设备数量</td> |
| | | <td class="w-16 m-color">操作</td> |
| | |
| | | <el-table-column prop="assessLevel" label="风险等级"> |
| | | <template #default="scope"> |
| | | <el-tag :type="scope.row.assessLevel == 4?'danger':scope.row.assessLevel == 3 || scope.row.assessLevel == 2?'warning':''"> |
| | | {{scope.row.assessLevel == 1?'低风险':scope.row.assessLevel == 2?'一般风险':scope.row.assessLevel == 3?'较大风险':scope.row.assessLevel == 4?'重大风险':'--'}} |
| | | {{scope.row.assessLevel == 1?'重大风险':scope.row.assessLevel == 2?'较大风险':scope.row.assessLevel == 3?'一般风险':scope.row.assessLevel == 4?'低风险':'--'}} |
| | | </el-tag> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | |
| | | import {verifyPhone,verifyIdCard} from "/@/utils/toolsValidate" |
| | | import { Base64 } from 'js-base64' |
| | | import {useMenuApi} from "/@/api/systemManage/menu"; |
| | | export default defineComponent({ |
| | | name: 'accountLogin', |
| | | setup() { |
| | |
| | | password: '', |
| | | rePassword: '' |
| | | }, |
| | | identifyDialog: false |
| | | identifyDialog: false, |
| | | menu: [] |
| | | }); |
| | | const identifyRef = ref<FormInstance>() |
| | | |
| | |
| | | // signInSuccess(); |
| | | // } |
| | | }; |
| | | |
| | | const getMenu = async () => { |
| | | let res = await useMenuApi().getMenuAdmin(); |
| | | if (res.data.code === 100) { |
| | | state.menu = JSON.parse(JSON.stringify(res.data.data)) |
| | | router.push(state.menu[0].children[0].path); |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: res.data.msg |
| | | }); |
| | | } |
| | | |
| | | }; |
| | | |
| | | // 登录成功后的跳转 |
| | | const signInSuccess = async () => { |
| | | // 初始化登录成功时间问候语 |
| | |
| | | // 登录成功,跳到转首页 |
| | | // 如果是复制粘贴的路径,非首页/登录页,那么登录成功后重定向到对应的路径中 |
| | | // if (route.json.query?.redirect) { |
| | | router.push('/project'); |
| | | getMenu() |
| | | // console.log(state.menu,'menu') |
| | | |
| | | // router.push({ |
| | | // path: <string>route.json.query?.redirect, |
| | | // query: Object.keys(<string>route.json.query?.params).length > 0 ? JSON.parse(<string>route.json.query?.params) : '', |
| | |
| | | return { |
| | | identifyRef, |
| | | identityRules, |
| | | getMenu, |
| | | clearIdentity, |
| | | onSignIn, |
| | | identify, |
| | |
| | | <div class="system-user-container"> |
| | | <el-card shadow="hover"> |
| | | <div class="system-user-search mb15"> |
| | | <el-select v-model="userTableData.listQuery.searchParams.userIndentityId" placeholder="专家类型" clearable class="w100" style="max-width: 180px"> |
| | | <el-select v-model="userTableData.listQuery.searchParams.userIndentityId" placeholder="专家类型" clearable class="w100" style="max-width: 180px" size="default"> |
| | | <el-option v-for="item in expList" :key="item.id" :label="item.identity" :value="item.id"> </el-option> |
| | | </el-select> |
| | | <el-button size="default" type="primary" class="ml10" @click="searchByName()"> |
| | |
| | | </el-table-column> |
| | | <el-table-column label="权限标识" show-overflow-tooltip> |
| | | <template #default="scope"> |
| | | <span>{{ scope.row.meta.roles }}</span> |
| | | <span>{{ scope.row.meta.roles.map(id => state.roleList.find(obj => obj.id === id)?.name).join(',') }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="排序" show-overflow-tooltip width="80"> |
| | |
| | | import { useMenuApi } from "/@/api/systemManage/menu"; |
| | | import { initBackEndControlRoutes } from "/@/router/backEnd"; |
| | | import {roomApi} from "/@/api/basic/room"; |
| | | import {useRoleApi} from "/@/api/systemManage/role"; |
| | | // import { setBackEndControlRefreshRoutes } from "/@/router/backEnd"; |
| | | |
| | | // 引入组件 |
| | |
| | | const menuDialogRef = ref(); |
| | | const state = reactive({ |
| | | tableData: { |
| | | data: [] as RouteRecordRaw[], |
| | | loading: false, |
| | | data: [] as RouteRecordRaw[], |
| | | loading: false, |
| | | }, |
| | | roleList: [] |
| | | }); |
| | | |
| | | // 获取路由数据,真实请从接口获取 |
| | |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | const initRoleTableData = async () => { |
| | | let res = await useRoleApi().getRoleList(); |
| | | if (res.data.code === 100) { |
| | | state.roleList = res.data.data; |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: res.data.msg |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | // 打开新增菜单弹窗 |
| | | const onOpenAddMenu = (type: string) => { |
| | | menuDialogRef.value.openDialog(type); |
| | |
| | | // 页面加载时 |
| | | onMounted(() => { |
| | | getTableData(); |
| | | initRoleTableData(); |
| | | }); |
| | | </script> |
| | |
| | | <div class="system-user-container"> |
| | | <el-card shadow="hover"> |
| | | <div class="system-user-search mb15"> |
| | | <el-input size="default" v-model.trim="searchName" placeholder="真实姓名" style="max-width: 180px"> </el-input> |
| | | <el-input size="default" v-model.trim="userTableData.listQuery.searchParams.realName" placeholder="真实姓名" style="max-width: 180px;margin-right: 10px"> </el-input> |
| | | <el-select v-model="userTableData.listQuery.searchParams.roleId" placeholder="角色类型" clearable class="w100" style="max-width: 180px" size="default"> |
| | | <el-option v-for="item in roleList" :key="item.id" :label="item.name" :value="item.id"> </el-option> |
| | | </el-select> |
| | | <el-button size="default" type="primary" class="ml10" @click="searchByName()"> |
| | | <el-icon> |
| | | <ele-Search /> |
| | |
| | | roleId: number | null; |
| | | name: string |
| | | realName: string |
| | | userIndentityId: number | null; |
| | | } |
| | | }; |
| | | }; |
| | |
| | | depList: []; |
| | | roleList: []; |
| | | expList: []; |
| | | searchName:string |
| | | searchType: null | number |
| | | } |
| | | |
| | | export default defineComponent({ |
| | |
| | | searchParams:{ |
| | | roleId: null, |
| | | name: '', |
| | | realName: '' |
| | | realName: '', |
| | | userIndentityId: null |
| | | } |
| | | } |
| | | }, |
| | |
| | | depList: [], |
| | | roleList: [], |
| | | expList: [], |
| | | searchName: '' |
| | | searchType:null |
| | | }); |
| | | // 初始化表格数据 |
| | | const initUserTableData = async () => { |
| | |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | const searchByName = async () =>{ |
| | | if(state.searchName == ''){ |
| | | const initRoleTableData = async () => { |
| | | let res = await useRoleApi().getRoleList(); |
| | | if (res.data.code === 100) { |
| | | state.roleList = res.data.data; |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '请输入搜索内容' |
| | | message: res.data.msg |
| | | }); |
| | | }else{ |
| | | let res = await userApi().getUserLByRealName(state.searchName); |
| | | if (res.data.code === 100) { |
| | | state.userTableData.data = res.data.data |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: res.data.msg |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | }; |
| | | |
| | | const searchByName = ()=>{ |
| | | initUserTableData() |
| | | } |
| | | |
| | | const reset = () =>{ |
| | | state.searchName = '' |
| | | state.userTableData.listQuery = { |
| | | pageIndex: 1, |
| | | pageSize: 10, |
| | | searchParams:{ |
| | | roleId: null, |
| | | name: '', |
| | | realName: '', |
| | | userIndentityId: null |
| | | } |
| | | } |
| | | initUserTableData() |
| | | } |
| | | |
| | |
| | | // 页面加载时 |
| | | onMounted(() => { |
| | | initUserTableData(); |
| | | initRoleTableData(); |
| | | getRoleData(); |
| | | getExpertsData(); |
| | | getDepList() |