马宇豪
2023-05-08 df5b61dcf9d7c6a71ba919b0556ea9aa43aa3f76
修改展示
已修改23个文件
584 ■■■■ 文件已修改
src/api/systemManage/menu/index.ts 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/toolsValidate.ts 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/analyse/applyReview/components/reportDialog.vue 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/analyse/assessApply/components/reportDialog.vue 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/analyse/evaluate/index.vue 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/analyse/identify/index.vue 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/analyse/plan/components/planDialog.vue 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/analyse/plan/index.ts 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/analyse/plan/index.vue 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/basic/equipment/components/equipmentDialog.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/basic/equipment/index.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/experiment/developing/components/applyDialog.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/experiment/developing/components/developDialog.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/experiment/developing/components/selectEquipment.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/experiment/developing/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/experiment/project/components/applyDialog.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/experiment/project/components/projectDialog.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/experiment/project/components/selectEquipment.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/experiment/project/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/loginPage/component/accountLogin.vue 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/experts/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/home/index.vue 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/user/index.vue 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/systemManage/menu/index.ts
@@ -17,7 +17,7 @@
        // },
        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'
            });
        },
src/utils/toolsValidate.ts
@@ -210,7 +210,7 @@
 */
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;
}
src/views/analyse/applyReview/components/reportDialog.vue
@@ -107,24 +107,6 @@
                        <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>
@@ -162,16 +144,34 @@
                    <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>
src/views/analyse/assessApply/components/reportDialog.vue
@@ -107,24 +107,6 @@
                        <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>
@@ -162,16 +144,34 @@
                    <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>
src/views/analyse/evaluate/index.vue
@@ -428,64 +428,6 @@
        }
    }
}
.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%;
src/views/analyse/identify/index.vue
@@ -27,6 +27,7 @@
                        <!--                        <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">
@@ -337,64 +338,6 @@
                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;
    }
}
src/views/analyse/plan/components/planDialog.vue
@@ -37,17 +37,27 @@
                            </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>
@@ -95,13 +105,17 @@
        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();
@@ -203,4 +217,39 @@
      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>
src/views/analyse/plan/index.ts
@@ -12,6 +12,8 @@
    evaluateMethodList: Array<Type>
    riskUnitList: Array<RiskUnitType>
    personList: Array<SystemPersonType>,
    bsExperts: [],
    pjExperts: [],
    reSendTitle:string
    reSendDialogVisible: boolean
    reSendForm: {
@@ -66,4 +68,6 @@
    },
    riskUnitList: Array<RiskUnitType>
    personList: Array<SystemPersonType>
    bsExperts: []
    pjExperts: []
}
src/views/analyse/plan/index.vue
@@ -85,16 +85,26 @@
        </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>
@@ -140,6 +150,8 @@
    riskUnitList: [
    ],
    personList: [],
    bsExperts: [],
    pjExperts: [],
    identificationMethodList: [
        {id:1, name: 'PHA'},
        {id:2, name: 'JHA'},
@@ -216,8 +228,34 @@
    }
};
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)=>{
@@ -407,6 +445,7 @@
onMounted(() => {
    getPlanData();
    getAllRiskUnitList();
    getAllExperts();
    getPersonList();
    planState.user = Number(userInfos.value.uid)
})
@@ -415,6 +454,13 @@
<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;
@@ -481,65 +527,42 @@
        }
    }
}
.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%;
}
src/views/basic/equipment/components/equipmentDialog.vue
@@ -26,8 +26,8 @@
                      </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">
@@ -119,7 +119,7 @@
    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' }],
src/views/basic/equipment/index.vue
@@ -13,8 +13,8 @@
                    </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">
@@ -46,7 +46,7 @@
                          </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>
src/views/experiment/developing/components/applyDialog.vue
@@ -9,7 +9,7 @@
                        </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>
src/views/experiment/developing/components/developDialog.vue
@@ -39,9 +39,17 @@
                      <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>
@@ -296,8 +304,8 @@
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: '',
src/views/experiment/developing/components/selectEquipment.vue
@@ -3,7 +3,7 @@
    <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>
src/views/experiment/developing/index.vue
@@ -71,7 +71,7 @@
                        <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>
src/views/experiment/project/components/applyDialog.vue
@@ -9,7 +9,7 @@
                        </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>
src/views/experiment/project/components/projectDialog.vue
@@ -45,6 +45,14 @@
                      <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>
@@ -369,10 +377,10 @@
  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;
src/views/experiment/project/components/selectEquipment.vue
@@ -3,7 +3,7 @@
    <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>
src/views/experiment/project/index.vue
@@ -71,7 +71,7 @@
                        <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>
src/views/loginPage/component/accountLogin.vue
@@ -87,6 +87,7 @@
import {verifyPhone,verifyIdCard} from "/@/utils/toolsValidate"
import { Base64 } from 'js-base64'
import {useMenuApi} from "/@/api/systemManage/menu";
export default defineComponent({
    name: 'accountLogin',
    setup() {
@@ -113,7 +114,8 @@
                password: '',
                rePassword: ''
            },
            identifyDialog: false
            identifyDialog: false,
            menu: []
        });
        const identifyRef = ref<FormInstance>()
@@ -227,6 +229,21 @@
            //     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 () => {
            // 初始化登录成功时间问候语
@@ -234,7 +251,9 @@
            // 登录成功,跳到转首页
            // 如果是复制粘贴的路径,非首页/登录页,那么登录成功后重定向到对应的路径中
            // 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) : '',
@@ -293,6 +312,7 @@
        return {
            identifyRef,
            identityRules,
            getMenu,
            clearIdentity,
            onSignIn,
            identify,
src/views/system/experts/index.vue
@@ -2,7 +2,7 @@
    <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()">
src/views/system/home/index.vue
@@ -37,7 +37,7 @@
                </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">
@@ -72,6 +72,7 @@
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";
// 引入组件
@@ -83,9 +84,10 @@
const menuDialogRef = ref();
const state = reactive({
    tableData: {
        data: [] as RouteRecordRaw[],
        loading: false,
      data: [] as RouteRecordRaw[],
          loading: false,
    },
  roleList: []
});
// 获取路由数据,真实请从接口获取
@@ -101,6 +103,19 @@
        });
    }
};
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);
@@ -140,5 +155,6 @@
// 页面加载时
onMounted(() => {
    getTableData();
  initRoleTableData();
});
</script>
src/views/system/user/index.vue
@@ -2,7 +2,10 @@
    <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 />
@@ -95,6 +98,7 @@
              roleId: number | null;
              name: string
              realName: string
              userIndentityId: number | null;
            }
        };
    };
@@ -102,7 +106,7 @@
    depList: [];
    roleList: [];
    expList: [];
    searchName:string
    searchType: null | number
}
export default defineComponent({
@@ -121,7 +125,8 @@
                  searchParams:{
                    roleId: null,
                    name: '',
                    realName: ''
                    realName: '',
                    userIndentityId: null
                  }
                }
            },
@@ -134,7 +139,7 @@
            depList: [],
            roleList: [],
            expList: [],
            searchName: ''
            searchType:null
        });
        // 初始化表格数据
        const initUserTableData = async () => {
@@ -149,28 +154,33 @@
                });
            }
        };
        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()
        }
@@ -253,6 +263,7 @@
        // 页面加载时
        onMounted(() => {
            initUserTableData();
            initRoleTableData();
            getRoleData();
            getExpertsData();
            getDepList()