| | |
| | | <template> |
| | | <div class="system-menu-dialog-container"> |
| | | <el-dialog :title="reportDialogState.title" v-model="reportDialogState.reportDialogVisible" width="80%"> |
| | | <div style="text-align: center;font-size: 20px;font-weight: bolder;color: #0c4995">{{reportDialogState.reportForm.experimentName}}实验安全风险评估报告表(带<span style="color: red">*</span>为填写内容)</div> |
| | | <el-form ref="reportFormRef" :rules="reportDialogState.reportFormRules" :model="reportDialogState.reportForm" size="default" label-width="0"> |
| | | <table class="report-table"> |
| | | <th class="m-color b-font" style="text-align: center">实验基本信息</th> |
| | | <tr> |
| | | <td class="w-25 m-color required">实验名称</td> |
| | | <td class="w-25 m-color">实验名称</td> |
| | | <td class="w-75 m-color"> |
| | | <el-form-item prop="experimentName"> |
| | | <el-input readonly v-model="reportDialogState.reportForm.experimentName" placeholder="请输入实验名称" /> |
| | |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="w-25 m-color required">实验类型</td> |
| | | <td class="w-75 m-color"> |
| | | <el-radio-group style="text-align: center" disabled v-model="reportDialogState.reportForm.experimentType"> |
| | | <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="5">特种设备类</el-radio> |
| | | <el-radio :label="6">其他类</el-radio> |
| | | </el-radio-group> |
| | | <td class="w-25 m-color">实验类型</td> |
| | | <td class="w-75" style="text-align: left;padding-left: 11px"> |
| | | <!-- <el-radio-group style="text-align: center" disabled v-model="reportDialogState.reportForm.experimentType">--> |
| | | <!-- <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="5">特种设备类</el-radio>--> |
| | | <!-- <el-radio :label="6">其他类</el-radio>--> |
| | | <!-- </el-radio-group>--> |
| | | {{reportDialogState.experimentTypeList.find(i=>i.id === reportDialogState.reportForm.experimentType)?.name}} |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="w-25 m-color required">负责人</td> |
| | | <td class="w-25 m-color">负责人</td> |
| | | <td class="w-25 m-color"> |
| | | <el-select style="width: 100%" disabled v-model="reportDialogState.reportForm.liabilityUserId" clearable filterable @change="getLiabilityUserPhone($event)"> |
| | | <el-option |
| | | v-for="item in reportDialogState.systemPersonList" |
| | | :key="item.id" |
| | | :value="item.id" |
| | | :label="item.realName" |
| | | ></el-option> |
| | | </el-select> |
| | | <!-- <el-select style="width: 100%" disabled v-model="reportDialogState.reportForm.liabilityUserId" clearable filterable @change="getLiabilityUserPhone($event)">--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in reportDialogState.systemPersonList"--> |
| | | <!-- :key="item.id"--> |
| | | <!-- :value="item.id"--> |
| | | <!-- :label="item.realName"--> |
| | | <!-- ></el-option>--> |
| | | <!-- </el-select>--> |
| | | <el-input readonly v-model="reportDialogState.reportForm.personUser" /> |
| | | </td> |
| | | <td class="w-25 m-color required">电话</td> |
| | | <td class="w-25 m-color">电话</td> |
| | | <td class="w-25 m-color"> |
| | | <el-input readonly v-model="reportDialogState.reportForm.liabilityUserPhone" /> |
| | | <el-input disabled v-model="reportDialogState.reportForm.personUserPhone" /> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="w-25 m-color required">安全负责人</td> |
| | | <td class="w-25 m-color">安全负责人</td> |
| | | <td class="w-25 m-color"> |
| | | <el-select v-if="reportDialogState.reportForm.safeLiabilityUserId" style="width: 100%" disabled v-model="reportDialogState.reportForm.safeLiabilityUserId" @change="getSafeLiabilityUserPhone($event)" 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 v-else disabled v-model="reportDialogState.reportForm.safeLiabilityUser" /> |
| | | <!-- <el-select v-if="reportDialogState.reportForm.safeLiabilityUserId" style="width: 100%" disabled v-model="reportDialogState.reportForm.safeLiabilityUserId" @change="getSafeLiabilityUserPhone($event)" 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 v-model="reportDialogState.reportForm.safePersonUser" /> |
| | | </td> |
| | | <td class="w-25 m-color required">电话</td> |
| | | <td class="w-25 m-color">电话</td> |
| | | <td class="w-25 m-color"> |
| | | <el-input readonly v-model="reportDialogState.reportForm.safeLiabilityUserPhone" /> |
| | | <el-input readonly v-model="reportDialogState.reportForm.safePersonUserPhone" /> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td class="w-25 m-color required">部门</td> |
| | | <td class="w-25 m-color">部门</td> |
| | | <td class="w-75 m-color"> |
| | | <el-input readonly v-model="reportDialogState.reportForm.dep" /> |
| | | </td> |
| | | </tr> |
| | | <tr class="m-color b-font" style="text-align: center">实验场所</tr> |
| | | <tr> |
| | | <td class="w-14 m-color required">场所名称</td> |
| | | <td class="w-14 m-color">场所名称</td> |
| | | <td class="w-14 m-color">所在楼栋</td> |
| | | <td class="w-14 m-color">房间</td> |
| | | <td class="w-14 m-color">有无消防设施</td> |
| | | <td class="w-14 m-color">有无隔断</td> |
| | | <td class="w-14 m-color">场所性质</td> |
| | | </tr> |
| | | <tr v-for="(item,index) in reportDialogState.reportForm.siteList" :key="index"> |
| | | <tr v-for="(item,index) in reportDialogState.reportForm.experimentSite" :key="index"> |
| | | <td class="w-14"> |
| | | <el-select disabled filterable v-model="item.siteId"> |
| | | <el-option |
| | | v-for="item in reportDialogState.allRoomList" |
| | | :key="item.id" |
| | | :value="item.id" |
| | | :label="item.siteName" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | <!-- <el-select disabled filterable v-model="item.siteId">--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in reportDialogState.allRoomList"--> |
| | | <!-- :key="item.id"--> |
| | | <!-- :value="item.id"--> |
| | | <!-- :label="item.siteName"--> |
| | | <!-- >--> |
| | | <!-- </el-option>--> |
| | | <!-- </el-select>--> |
| | | <el-input disabled v-model="item.siteName" /> |
| | | </td> |
| | | <td class="w-14"> |
| | | <el-input disabled v-model="item.floor" /> |
| | |
| | | </tr> |
| | | <tr> |
| | | <td class="w-25 m-color required">评估人</td> |
| | | <td class="w-25 m-color"> |
| | | <el-select style="width: 100%" :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.assessUserId" clearable filterable> |
| | | <el-option |
| | | v-for="item in reportDialogState.allPersonList" |
| | | :key="item.id" |
| | | :value="item.id" |
| | | :label="item.personName" |
| | | ></el-option> |
| | | </el-select> |
| | | <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> |
| | | <!-- <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> |
| | | <el-input type="textarea" :autosize="{ minRows: 3}" :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.experimentDesc" placeholder="(简要描述实验原理、实验步骤、所用试剂或材料设备等)" /> |
| | | <el-input type="textarea" :autosize="{ minRows: 3}" disabled v-model="reportDialogState.reportForm.experimentDesc" placeholder="(简要描述实验原理、实验步骤、所用试剂或材料设备等)" /> |
| | | </tr> |
| | | <tr class="m-color b-font" style="text-align: center">实验涉及的危险源</tr> |
| | | <tr> |
| | | <td class="w-25 m-color required">危险源种类</td> |
| | | <td class="w-25 m-color">危险源种类</td> |
| | | <td class="w-75 m-color"> |
| | | <el-radio-group :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.dangerSource"> |
| | | <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="5">电气安全</el-radio> |
| | | <el-radio :label="6">生物安全</el-radio> |
| | | <el-radio :label="7">激光安全</el-radio> |
| | | <el-radio :label="8">其他安全</el-radio> |
| | | </el-radio-group> |
| | | <!-- <el-radio-group disabled v-model="reportDialogState.reportForm.dangerSource">--> |
| | | <!-- <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="5">电气安全</el-radio>--> |
| | | <!-- <el-radio :label="6">生物安全</el-radio>--> |
| | | <!-- <el-radio :label="7">激光安全</el-radio>--> |
| | | <!-- <el-radio :label="8">其他安全</el-radio>--> |
| | | <!-- </el-radio-group>--> |
| | | <el-checkbox-group disabled> |
| | | <el-checkbox v-for="item in reportDialogState.reportForm.riskSourceType" :label="item.riskSourceType" :checked="item.status==1?true:false"/> |
| | | </el-checkbox-group> |
| | | </td> |
| | | </tr> |
| | | <select-danger ref="selectDangerRef" v-model:data="reportDialogState.reportForm.riskSource" v-model:disabled="reportDialogState.disabled"></select-danger> |
| | | <tr class="m-color b-font" style="text-align: center">安全风险分析(总结)</tr> |
| | | <tr class="m-color b-font required" style="text-align: center">安全风险分析(总结)</tr> |
| | | <tr> |
| | | <el-input type="textarea" :autosize="{ minRows: 3}" :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.safeRiskAnalysis" placeholder="1.实验过程中是否有爆炸、火灾、腐蚀、中毒风险、产生危险废弃物等(根据危险源清单,分析实验过程中可能对人身安全、人体健康、实验室环境和周边环境等带来的负面影响)" /> |
| | | </tr> |
| | | <tr class="m-color b-font" style="text-align: center">拟采取的防护和应急措施</tr> |
| | | <tr> |
| | | <el-input type="textarea" :autosize="{ minRows: 3}" :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.emergencyMeasure" placeholder="" /> |
| | | <el-input type="textarea" :autosize="{ minRows: 3}" disabled v-model="reportDialogState.reportForm.emergencyMeasure" placeholder="" /> |
| | | </tr> |
| | | <tr class="m-color b-font" style="text-align: center">实验和实验项目综合风险等级评定</tr> |
| | | <tr class="m-color b-font required" style="text-align: center">实验和实验项目综合风险等级评定</tr> |
| | | <tr> |
| | | <td class="m-color" style="width: 100%"> |
| | | <el-radio-group :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.assessLevel"> |
| | | <el-radio :label="4">重大风险(一级)</el-radio> |
| | | <el-radio :label="3">较大风险(二级)</el-radio> |
| | | <el-radio :label="2">一般风险(三级)</el-radio> |
| | | <el-radio :label="1">低风险(四级)</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.reskLevelReason" placeholder="请输入评定依据" /> |
| | | <el-input type="textarea" :autosize="{ minRows: 3}" :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.description" placeholder="评定依据(必填)" /> |
| | | </tr> |
| | | </table> |
| | | </el-form> |
| | | <template #footer> |
| | | <span class="dialog-footer" style="padding-top:10px;text-align: center !important;"> |
| | | <el-button @click="reportDialogState.reportDialogVisible = !reportDialogState.reportDialogVisible" size="default">取 消</el-button> |
| | | <el-button type="primary" v-if="!reportDialogState.disabled" @click="onSubmitProject" size="default">提交审批</el-button> |
| | | <el-button type="primary" v-if="!reportDialogState.disabled" @click="onSubmitProject()" size="default">提交审批</el-button> |
| | | </span> |
| | | </template> |
| | | </el-dialog> |
| | |
| | | import {personApi} from "/@/api/basic/person"; |
| | | import {userApi} from "/@/api/systemManage/user"; |
| | | import {roomApi} from "/@/api/basic/room"; |
| | | import {assessApplyApi} from "/@/api/analyse/assessApply"; |
| | | |
| | | const SelectDanger = defineAsyncComponent(() => import('./selectDanger.vue')) |
| | | const selectDangerRef = ref() |
| | |
| | | title: '', |
| | | disabled: false, |
| | | reportDialogVisible: false, |
| | | reportForm: { |
| | | reportForm: { |
| | | id: null, |
| | | experimentName: "", |
| | | experimentType: null, |
| | | liabilityUserId: null, |
| | | liabilityUserPhone: '', |
| | | safeLiabilityUserId: null, |
| | | safeLiabilityUser: '', |
| | | safeLiabilityUserPhone: '', |
| | | personUser: '', |
| | | personUserId: null, |
| | | personUserPhone: '', |
| | | safePersonUserId: null, |
| | | safePersonUser: '', |
| | | safePersonUserPhone: '', |
| | | dep: "", |
| | | siteList: [], |
| | | experimentSite: [], |
| | | experimentDesc: '', |
| | | safeRiskAnalysis: '', |
| | | emergencyMeasure: '', |
| | | assessPerson:'', |
| | | safeRiskAnalysis: '', |
| | | assessLevel:null, |
| | | riskSource: [] |
| | | riskSource: [], |
| | | riskSourceType: [], |
| | | description: '', |
| | | person:[] |
| | | }, |
| | | reportFormRules: {}, |
| | | reportFormRules: { |
| | | assessPerson: [{ required: true, message: '请填写评估人员', trigger: 'blur' }], |
| | | safeRiskAnalysis: [{ required: true, message: '请填写安全风险分析', trigger: 'blur' }], |
| | | assessLevel: [{ required: true, message: '请选择风险等级评定', trigger: 'blur' }], |
| | | description: [{ required: true, message: '请填写风险等级评定依据', trigger: 'blur' }], |
| | | }, |
| | | allPersonList: [], |
| | | allRoomList: [], |
| | | systemPersonList: [], |
| | | experimentTypeList: [ |
| | | {id: 1, name: '化学类'}, |
| | | {id: 2, name: '生物类'}, |
| | | {id: 3, name: '辐射类'}, |
| | | {id: 4, name: '机电类'}, |
| | | {id: 5, name: '特种设备类'}, |
| | | {id: 6, name: '其它类'} |
| | | ] |
| | | }) |
| | | |
| | | const showReportDialog = (title: string, value: ProjectType, allRoomList: RoomType []) => { |
| | | getReportData(value.id) |
| | | reportDialogState.reportDialogVisible = true; |
| | | reportDialogState.allRoomList = allRoomList |
| | | setTimeout(() => { |
| | |
| | | if(title === '提交'){ |
| | | reportDialogState.title = '提交报告'; |
| | | reportDialogState.disabled = false |
| | | for(let i in reportDialogState.reportForm) { |
| | | if(isValidKey(i, reportDialogState.reportForm)) { |
| | | reportDialogState.reportForm[i] = value[i]; |
| | | } |
| | | } |
| | | // for(let i in reportDialogState.reportForm) { |
| | | // if(isValidKey(i, reportDialogState.reportForm)) { |
| | | // reportDialogState.reportForm[i] = value[i]; |
| | | // } |
| | | // } |
| | | }else if(title === '修改'){ |
| | | reportDialogState.title = '修改报告'; |
| | | reportDialogState.disabled = false |
| | | }else{ |
| | | reportDialogState.title = '查看'; |
| | | reportDialogState.disabled = true |
| | | for(let i in reportDialogState.reportForm) { |
| | | if(isValidKey(i, reportDialogState.reportForm)) { |
| | | reportDialogState.reportForm[i] = value[i]; |
| | | } |
| | | } |
| | | // for(let i in reportDialogState.reportForm) { |
| | | // if(isValidKey(i, reportDialogState.reportForm)) { |
| | | // reportDialogState.reportForm[i] = value[i]; |
| | | // } |
| | | // } |
| | | } |
| | | }; |
| | | |
| | |
| | | return key in object; |
| | | }; |
| | | |
| | | const getLiabilityUserPhone = (value: number)=>{ |
| | | const data = reportDialogState.systemPersonList.find(item => item.id === value) as AllPersonListType |
| | | reportDialogState.reportForm.liabilityUserPhone = data.phone |
| | | } |
| | | |
| | | const getSafeLiabilityUserPhone = (value: number)=>{ |
| | | const data = reportDialogState.allPersonList.find(item => item.id === value) as AllPersonListType |
| | | reportDialogState.reportForm.safeLiabilityUserPhone = data.phone |
| | | } |
| | | |
| | | const hasSafeSystem = (value: number) =>{ |
| | | if(value == 2){ |
| | | reportDialogState.reportForm.safeInformationSystem = '' |
| | | const getReportData = async (id:number|null|undefined) => { |
| | | let res = await assessApplyApi().getRiskReportPage({ |
| | | experimentId: id, |
| | | pageIndex: 1, |
| | | pageSize: 10, |
| | | tag: 3 |
| | | }); |
| | | if(res.data.code === 100){ |
| | | reportDialogState.reportForm = { |
| | | id: null, |
| | | experimentName: "", |
| | | experimentType: null, |
| | | personUser: '', |
| | | personUserId: null, |
| | | personUserPhone: '', |
| | | safePersonUserId: null, |
| | | safePersonUser: '', |
| | | safePersonUserPhone: '', |
| | | dep: "", |
| | | experimentSite: [], |
| | | experimentDesc: '', |
| | | emergencyMeasure: '', |
| | | assessPerson:'', |
| | | safeRiskAnalysis: '', |
| | | assessLevel:null, |
| | | riskSource: [], |
| | | riskSourceType: [], |
| | | description: '', |
| | | person:[] |
| | | } |
| | | if(res.data.data&&res.data.data.length==0){ |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '暂时无法获取实验信息,可能与用户身份有关' |
| | | }); |
| | | }else{ |
| | | for(let i in reportDialogState.reportForm) { |
| | | if(isValidKey(i, reportDialogState.reportForm)) { |
| | | reportDialogState.reportForm[i] = res.data.data[0][i]; |
| | | } |
| | | } |
| | | } |
| | | }else{ |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: res.data.msg |
| | | }); |
| | | } |
| | | } |
| | | }; |
| | | |
| | | // const getLiabilityUserPhone = (value: number)=>{ |
| | | // const data = reportDialogState.systemPersonList.find(item => item.id === value) as AllPersonListType |
| | | // reportDialogState.reportForm.liabilityUserPhone = data.phone |
| | | // } |
| | | // |
| | | // const getSafeLiabilityUserPhone = (value: number)=>{ |
| | | // const data = reportDialogState.allPersonList.find(item => item.id === value) as AllPersonListType |
| | | // reportDialogState.reportForm.safeLiabilityUserPhone = data.phone |
| | | // } |
| | | |
| | | // const hasSafeSystem = (value: number) =>{ |
| | | // if(value == 2){ |
| | | // reportDialogState.reportForm.safeInformationSystem = '' |
| | | // } |
| | | // } |
| | | |
| | | const onSubmitProject = () => { |
| | | reportFormRef.value.validate(async(valid: boolean) => { |
| | | if(valid){ |
| | | if(reportDialogState.title === '新增'){ |
| | | let res = await projectApi().addDevelop(reportDialogState.reportForm); |
| | | const { id,assessPerson,safeRiskAnalysis,assessLevel,description } = reportDialogState.reportForm |
| | | const data = { id,assessPerson,safeRiskAnalysis,assessLevel,description } |
| | | if(reportDialogState.title === '提交报告'){ |
| | | let res = await assessApplyApi().updateRiskReport(data); |
| | | if(res.data.code === 100){ |
| | | emit('refresh') |
| | | reportDialogState.reportDialogVisible = false; |
| | | ElMessage({ |
| | | type: 'success', |
| | | message: '新增成功' |
| | | message: '提交报告成功' |
| | | }) |
| | | }else{ |
| | | ElMessage({ |
| | |
| | | }); |
| | | } |
| | | }else{ |
| | | let res = await projectApi().modProject(reportDialogState.reportForm) |
| | | let res = await assessApplyApi().updateRiskReportInfo(data) |
| | | if(res.data.code === 100){ |
| | | emit('refresh') |
| | | reportDialogState.reportDialogVisible = false; |
| | | ElMessage({ |
| | | type: 'success', |
| | | message: '整改已提交' |
| | | message: '修改报告成功' |
| | | }) |
| | | }else{ |
| | | ElMessage({ |
| | |
| | | line-height: 42px; |
| | | border-bottom: 1px solid #ccc; |
| | | |
| | | &.required { |
| | | &::before { |
| | | content: "*"; |
| | | display: inline-block; |
| | | color: red; |
| | | } |
| | | } |
| | | |
| | | &:last-of-type { |
| | | border-bottom: none; |
| | | } |