马宇豪
2023-08-16 a8ef7c1a4b2ab6acd91a0520e6258bd753d17f20
人员证书类型
已修改10个文件
已添加5个文件
1056 ■■■■ 文件已修改
src/api/specialWorkSystem/workApply/index.ts 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/systemManage/certificate/index.ts 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/newSpecialWorkSystem/workTicket/zysq/components/broken.vue 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/newSpecialWorkSystem/workTicket/zysq/components/ground.vue 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/newSpecialWorkSystem/workTicket/zysq/components/height.vue 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/newSpecialWorkSystem/workTicket/zysq/components/hoist.vue 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/newSpecialWorkSystem/workTicket/zysq/components/plate.vue 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/newSpecialWorkSystem/workTicket/zysq/components/power.vue 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/newSpecialWorkSystem/workTicket/zysq/components/space.vue 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/newSpecialWorkSystem/workTicket/zysq/index.vue 67 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/certificate/component/certificateDialog.vue 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/certificate/component/certificateMember.vue 214 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/certificate/component/messages.vue 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/certificate/index.vue 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/specialWorkSystem/workApply/index.ts
@@ -177,6 +177,15 @@
            });
        },
        // 查询特殊作业人员
        getSpList: (data: object) => {
            return request({
                url: import.meta.env.VITE_API_URL + `/account/special/list`,
                method: 'post',
                data: data
            });
        },
        // 受限空间申请
        postSpaceApply: (data: object) => {
            return request({
src/api/systemManage/certificate/index.ts
对比新文件
@@ -0,0 +1,53 @@
import request from '/@/utils/request';
export function certApi() {
    return {
        // v2
        getCerttypeList: (data: object) => {
            return request({
                url: import.meta.env.VITE_API_URL + `/certtype/page/list`,
                method: 'post',
                data: data
            });
        },
        // v2
        addCerttype: (data: object) => {
            return request({
                url: import.meta.env.VITE_API_URL + `/certtype/add`,
                method: 'post',
                data: data
            });
        },
        // v2
        modCerttype: (data: object) => {
            return request({
                url: import.meta.env.VITE_API_URL + `/certtype/mod`,
                method: 'post',
                data: data
            });
        },
        // v2
        deleteCerttype: (id: number) => {
            return request({
                url: import.meta.env.VITE_API_URL + `/certtype/del?id=${id}`,
                method: 'get'
            });
        },
        getCertUsers: (data: object) => {
            return request({
                url: import.meta.env.VITE_API_URL + `/account/user/certtype/list`,
                method: 'post',
                data: data
            });
        },
        getCertUnvalid: (data: object) => {
            return request({
                url: import.meta.env.VITE_API_URL + `/account/user/cert/unvalid/list`,
                method: 'post',
                data: data
            });
        }
    };
}
src/views/newSpecialWorkSystem/workTicket/zysq/components/broken.vue
@@ -56,11 +56,11 @@
        </el-col>
        <el-col :span="12">
          <el-form-item label="监护人" prop="guardianUids">
            <el-select v-model="form.guardianUids" multiple @change="getSafetyIds" clearable>
            <el-select v-model="form.guardianUids" filterable multiple @change="getSafetyIds" clearable>
              <el-option
                  v-for="item in workerList"
                  v-for="item in spList.jhList"
                  :key="item.uid"
                  :label="item.username"
                  :label="item.realName"
                  :value="item.uid"
              />
            </el-select>
@@ -70,7 +70,7 @@
      <el-row>
        <el-col :span="12">
          <el-form-item label="作业负责人" prop="headUids">
            <el-select v-model="form.headUids" multiple @change="getStartEndIds" clearable>
            <el-select v-model="form.headUids" filterable multiple @change="getStartEndIds" clearable>
              <el-option
                  v-for="item in workerList"
                  :key="item.uid"
@@ -82,11 +82,11 @@
        </el-col>
        <el-col :span="12">
          <el-form-item label="作业人及证件编号" prop="operatorUids">
            <el-select v-model="form.operatorUids" multiple clearable>
            <el-select v-model="form.operatorUids" filterable multiple clearable>
              <el-option
                  v-for="item in workerList"
                  v-for="item in spList.opList"
                  :key="item.uid"
                  :label="item.username"
                  :label="item.realName"
                  :value="item.uid"
              />
            </el-select>
@@ -95,7 +95,7 @@
      </el-row>
      <el-row>
        <el-col :span="12" class="valueSelect">
          <el-form-item label="关联其他特殊作业" prop="involveOtherWork">
          <el-form-item label="关联其他特殊作业">
<!--            <el-select v-model="form.involveOtherWork" multiple clearable>-->
<!--              <el-option-->
<!--                  v-for="item in otherWorkList"-->
@@ -223,7 +223,7 @@
        <el-row>
          <el-col :span="12">
            <el-form-item label="安全措施确认人" prop="safetyMeasureUids">
              <el-select v-model="form.safetyMeasureUids" multiple clearable>
              <el-select v-model="form.safetyMeasureUids" filterable multiple clearable>
                <el-option
                    v-for="item in workerList"
                    :key="item.uid"
@@ -270,7 +270,7 @@
            </el-table-column>
            <el-table-column prop="approvalUids" label="审批人" align="center">
              <template #default="scope">
                <el-select v-model="scope.row.approvalUids" multiple :disabled="isFirstRow(scope.$index)" clearable>
                <el-select v-model="scope.row.approvalUids" filterable multiple :disabled="isFirstRow(scope.$index)" clearable>
                  <el-option
                      v-for="item in workerList"
                      :key="item.uid"
@@ -285,7 +285,7 @@
        <el-row>
          <el-col :span="12">
            <el-form-item label="完工验收" prop="acceptUid">
              <el-select v-model="form.acceptUid" clearable>
              <el-select v-model="form.acceptUid" filterable clearable>
                <el-option
                    v-for="item in workerList"
                    :key="item.uid"
@@ -297,7 +297,7 @@
          </el-col>
          <el-col :span="12">
            <el-form-item label="现场开始结束确认人" prop="startOrEndUids">
              <el-select v-model="form.startOrEndUids" multiple clearable>
              <el-select v-model="form.startOrEndUids" filterable multiple clearable>
                <el-option
                    v-for="item in workerList"
                    :key="item.uid"
@@ -311,7 +311,7 @@
        <el-row>
          <el-col :span="12">
            <el-form-item label="签字人" prop="workDetail.signUid">
              <el-select v-model="form.workDetail.signUid" clearable>
              <el-select v-model="form.workDetail.signUid" filterable clearable>
                <el-option
                    v-for="item in workerList"
                    :key="item.uid"
@@ -363,7 +363,7 @@
    export default defineComponent({
        name: 'brokenForm',
        components: {workSelect},
        props:['departList','departList2','workerList','deviceList','otherWorks'],
        props:['departList','departList2','workerList','deviceList','otherWorks','spList'],
        setup(props: any, context: any) {
            const userInfo = useUserInfo()
            const { userInfos } = storeToRefs(userInfo);
@@ -436,7 +436,6 @@
        workDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        headUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        analystUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        involveOtherWork: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        guardianUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        riskIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue
@@ -56,11 +56,11 @@
        </el-col>
        <el-col :span="12">
          <el-form-item label="作业人及证件编号" prop="operatorUids">
            <el-select v-model="form.operatorUids" multiple clearable>
            <el-select v-model="form.operatorUids" filterable multiple clearable>
              <el-option
                  v-for="item in workerList"
                  v-for="item in spList.opList"
                  :key="item.uid"
                  :label="item.username"
                  :label="item.realName"
                  :value="item.uid"
              />
            </el-select>
@@ -75,7 +75,7 @@
        </el-col>
        <el-col :span="12">
          <el-form-item label="作业负责人" prop="headUids">
            <el-select v-model="form.headUids" multiple @change="getStartEndIds" clearable>
            <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>
              <el-option
                  v-for="item in workerList"
                  :key="item.uid"
@@ -89,7 +89,7 @@
      <el-row>
        <el-col :span="12">
          <el-form-item label="分析人" prop="analystUids">
            <el-select v-model="form.analystUids" multiple clearable>
            <el-select v-model="form.analystUids" filterable multiple clearable>
              <el-option
                  v-for="item in workerList"
                  :key="item.uid"
@@ -100,7 +100,7 @@
          </el-form-item>
        </el-col>
        <el-col :span="12" class="valueSelect">
          <el-form-item label="关联其他特殊作业" prop="involveOtherWork">
          <el-form-item label="关联其他特殊作业">
            <el-select v-model="form.involveOtherWork" multiple clearable :teleported="false" @click="openWorkSelect">
              <el-option v-for="item in otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId">
              </el-option>
@@ -111,11 +111,11 @@
      <el-row>
        <el-col :span="12">
          <el-form-item label="监护人" prop="guardianUids">
            <el-select v-model="form.guardianUids" multiple @change="getSafetyIds" clearable>
            <el-select v-model="form.guardianUids" filterable multiple @change="getSafetyIds" clearable>
              <el-option
                  v-for="item in workerList"
                  v-for="item in spList.jhList"
                  :key="item.uid"
                  :label="item.username"
                  :label="item.realName"
                  :value="item.uid"
              />
            </el-select>
@@ -212,7 +212,7 @@
        <el-row>
          <el-col :span="12">
            <el-form-item label="安全措施确认人" prop="safetyMeasureUids">
              <el-select v-model="form.safetyMeasureUids" multiple clearable>
              <el-select v-model="form.safetyMeasureUids" filterable multiple clearable>
                <el-option
                    v-for="item in workerList"
                    :key="item.uid"
@@ -259,7 +259,7 @@
            </el-table-column>
            <el-table-column prop="approvalUids" label="审批人" align="center">
              <template #default="scope">
                <el-select v-model="scope.row.approvalUids" multiple :disabled="isFirstRow(scope.$index)" clearable>
                <el-select v-model="scope.row.approvalUids" filterable multiple :disabled="isFirstRow(scope.$index)" clearable>
                  <el-option
                      v-for="item in workerList"
                      :key="item.uid"
@@ -274,7 +274,7 @@
        <el-row>
          <el-col :span="12">
            <el-form-item label="完工验收" prop="acceptUid">
              <el-select v-model="form.acceptUid" clearable>
              <el-select v-model="form.acceptUid" filterable clearable>
                <el-option
                    v-for="item in workerList"
                    :key="item.uid"
@@ -286,7 +286,7 @@
          </el-col>
          <el-col :span="12">
            <el-form-item label="现场开始结束确认人" prop="startOrEndUids">
              <el-select v-model="form.startOrEndUids" multiple clearable>
              <el-select v-model="form.startOrEndUids" filterable multiple clearable>
                <el-option
                    v-for="item in workerList"
                    :key="item.uid"
@@ -328,7 +328,7 @@
    export default defineComponent({
        name: 'fireForm',
        components: {workSelect},
        props:['departList','departList2','workerList','deviceList','otherWorks'],
        props:['departList','departList2','workerList','deviceList','otherWorks','spList'],
        setup(props: any, context: any) {
            const userInfo = useUserInfo()
            const { userInfos } = storeToRefs(userInfo);
@@ -398,7 +398,6 @@
        workDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        headUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        analystUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        involveOtherWork: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        guardianUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        riskIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
src/views/newSpecialWorkSystem/workTicket/zysq/components/ground.vue
@@ -24,9 +24,9 @@
          <el-form-item label="作业人及证件编号" prop="operatorUids">
            <el-select v-model="form.operatorUids" multiple clearable>
              <el-option
                  v-for="item in workerList"
                  v-for="item in spList.opList"
                  :key="item.uid"
                  :label="item.username"
                  :label="item.realName"
                  :value="item.uid"
              />
            </el-select>
@@ -41,7 +41,7 @@
        </el-col>
        <el-col :span="12">
          <el-form-item label="作业负责人" prop="headUids">
            <el-select v-model="form.headUids" multiple @change="getStartEndIds" clearable>
            <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>
              <el-option
                  v-for="item in workerList"
                  :key="item.uid"
@@ -64,7 +64,7 @@
            </el-form-item>
          </el-col>
          <el-col :span="12" class="valueSelect">
            <el-form-item label="关联其他特殊作业" prop="involveOtherWork">
            <el-form-item label="关联其他特殊作业">
<!--              <el-select v-model="form.involveOtherWork" multiple clearable>-->
<!--                <el-option-->
<!--                    v-for="item in otherWorkList"-->
@@ -83,11 +83,11 @@
      <el-row>
        <el-col :span="12">
          <el-form-item label="监护人" prop="guardianUids">
            <el-select v-model="form.guardianUids" multiple @change="getSafetyIds" clearable>
            <el-select v-model="form.guardianUids" filterable multiple @change="getSafetyIds" clearable>
              <el-option
                  v-for="item in workerList"
                  v-for="item in spList.jhList"
                  :key="item.uid"
                  :label="item.username"
                  :label="item.realName"
                  :value="item.uid"
              />
            </el-select>
@@ -206,7 +206,7 @@
        <el-row>
          <el-col :span="12">
            <el-form-item label="安全措施确认人" prop="safetyMeasureUids">
              <el-select v-model="form.safetyMeasureUids" multiple clearable>
              <el-select v-model="form.safetyMeasureUids" filterable multiple clearable>
                <el-option
                    v-for="item in workerList"
                    :key="item.uid"
@@ -253,7 +253,7 @@
            </el-table-column>
            <el-table-column prop="approvalUids" label="审批人" align="center">
              <template #default="scope">
                <el-select v-model="scope.row.approvalUids" multiple :disabled="isFirstRow(scope.$index)" clearable>
                <el-select v-model="scope.row.approvalUids" filterable multiple :disabled="isFirstRow(scope.$index)" clearable>
                  <el-option
                      v-for="item in workerList"
                      :key="item.uid"
@@ -268,7 +268,7 @@
        <el-row>
          <el-col :span="12">
            <el-form-item label="完工验收" prop="acceptUid">
              <el-select v-model="form.acceptUid" clearable>
              <el-select v-model="form.acceptUid" filterable clearable>
                <el-option
                    v-for="item in workerList"
                    :key="item.uid"
@@ -280,7 +280,7 @@
          </el-col>
          <el-col :span="12">
            <el-form-item label="现场开始结束确认人" prop="startOrEndUids">
              <el-select v-model="form.startOrEndUids" multiple clearable>
              <el-select v-model="form.startOrEndUids" filterable multiple clearable>
                <el-option
                    v-for="item in workerList"
                    :key="item.uid"
@@ -294,7 +294,7 @@
        <el-row>
          <el-col :span="12">
            <el-form-item label="签字人" prop="workDetail.signUid">
              <el-select v-model="form.workDetail.signUid" clearable>
              <el-select v-model="form.workDetail.signUid" filterable clearable>
                <el-option
                    v-for="item in workerList"
                    :key="item.uid"
@@ -347,7 +347,7 @@
    export default defineComponent({
        name: 'groundForm',
        components: {workSelect},
        props:['departList','departList2','workerList','deviceList','otherWorks'],
        props:['departList','departList2','workerList','deviceList','otherWorks','spList'],
        setup(props: any, context: any) {
            const userInfo = useUserInfo()
            const { userInfos } = storeToRefs(userInfo);
@@ -408,7 +408,6 @@
        operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        workDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        headUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        involveOtherWork: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        guardianUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        riskIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
src/views/newSpecialWorkSystem/workTicket/zysq/components/height.vue
@@ -55,11 +55,11 @@
        </el-col>
        <el-col :span="12">
          <el-form-item label="作业人及证件编号" prop="operatorUids">
            <el-select v-model="form.operatorUids" multiple clearable>
            <el-select v-model="form.operatorUids" filterable multiple clearable>
              <el-option
                  v-for="item in workerList"
                  v-for="item in spList.opList"
                  :key="item.uid"
                  :label="item.username"
                  :label="item.realName"
                  :value="item.uid"
              />
            </el-select>
@@ -74,7 +74,7 @@
        </el-col>
        <el-col :span="12">
          <el-form-item label="作业负责人" prop="headUids">
            <el-select v-model="form.headUids" multiple @change="getStartEndIds" clearable>
            <el-select v-model="form.headUids" filterable multiple @change="getStartEndIds" clearable>
              <el-option
                  v-for="item in workerList"
                  :key="item.uid"
@@ -88,18 +88,18 @@
      <el-row>
        <el-col :span="12">
          <el-form-item label="监护人" prop="guardianUids">
            <el-select v-model="form.guardianUids" multiple @change="getSafetyIds" clearable>
            <el-select v-model="form.guardianUids" filterable multiple @change="getSafetyIds" clearable>
              <el-option
                  v-for="item in workerList"
                  v-for="item in spList.jhList"
                  :key="item.uid"
                  :label="item.username"
                  :label="item.realName"
                  :value="item.uid"
              />
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="12" class="valueSelect">
          <el-form-item label="关联其他特殊作业" prop="involveOtherWork">
          <el-form-item label="关联其他特殊作业">
<!--            <el-select v-model="form.involveOtherWork" multiple clearable>-->
<!--              <el-option-->
<!--                  v-for="item in otherWorkList"-->
@@ -183,7 +183,7 @@
        </el-row>
        <el-row>
          <el-col :span="12">
            <el-form-item label="安全措施确认人" prop="safetyMeasureUids">
            <el-form-item label="安全措施确认人" filterable prop="safetyMeasureUids">
              <el-select v-model="form.safetyMeasureUids" multiple clearable>
                <el-option
                    v-for="item in workerList"
@@ -209,7 +209,7 @@
                </el-form-item>
              </template>
            </el-table-column>
            <el-table-column prop="approvalUids" label="审批人" align="center">
            <el-table-column prop="approvalUids" filterable label="审批人" align="center">
              <template #default="scope">
                <el-select v-model="scope.row.approvalUids" multiple :disabled="isFirstRow(scope.$index)" clearable>
                  <el-option
@@ -237,7 +237,7 @@
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="现场开始结束确认人" prop="startOrEndUids">
            <el-form-item label="现场开始结束确认人" filterable prop="startOrEndUids">
              <el-select v-model="form.startOrEndUids" multiple clearable>
                <el-option
                    v-for="item in workerList"
@@ -280,7 +280,7 @@
    export default defineComponent({
        name: 'heightForm',
        components: {workSelect},
        props:['departList','departList2','workerList','deviceList','otherWorks'],
        props:['departList','departList2','workerList','deviceList','otherWorks','spList'],
        setup(props: any, context: any) {
            const userInfo = useUserInfo()
            const { userInfos } = storeToRefs(userInfo);
@@ -352,7 +352,6 @@
        operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        workDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        headUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        involveOtherWork: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        guardianUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        riskIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
src/views/newSpecialWorkSystem/workTicket/zysq/components/hoist.vue
@@ -65,11 +65,11 @@
        </el-col>
        <el-col :span="12">
          <el-form-item label="吊装作业人及证件编号" prop="operatorUids">
            <el-select v-model="form.operatorUids" multiple clearable>
            <el-select v-model="form.operatorUids" filterable multiple clearable>
              <el-option
                  v-for="item in workerList"
                  v-for="item in spList.opList"
                  :key="item.uid"
                  :label="item.username"
                  :label="item.realName"
                  :value="item.uid"
              />
            </el-select>
@@ -83,8 +83,8 @@
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="指挥人员" prop="headUids">
            <el-select v-model="form.headUids" multiple @change="getStartEndIds" clearable>
          <el-form-item label="作业负责人" prop="headUids">
            <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>
              <el-option
                  v-for="item in workerList"
                  :key="item.uid"
@@ -98,7 +98,7 @@
      <el-row>
        <el-col :span="12">
          <el-form-item label="司索人" prop="workDetail.solicitorUids">
            <el-select v-model="form.workDetail.solicitorUids" multiple clearable>
            <el-select v-model="form.workDetail.solicitorUids" filterable multiple clearable>
              <el-option
                  v-for="item in workerList"
                  :key="item.uid"
@@ -109,7 +109,7 @@
          </el-form-item>
        </el-col>
        <el-col :span="12" class="valueSelect">
          <el-form-item label="关联其他特殊作业" prop="involveOtherWork">
          <el-form-item label="关联其他特殊作业">
<!--            <el-select v-model="form.involveOtherWork" multiple clearable>-->
<!--              <el-option-->
<!--                  v-for="item in otherWorkList"-->
@@ -128,11 +128,11 @@
      <el-row>
        <el-col :span="12">
          <el-form-item label="监护人" prop="guardianUids">
            <el-select v-model="form.guardianUids" multiple @change="getSafetyIds" clearable>
            <el-select v-model="form.guardianUids" filterable multiple @change="getSafetyIds" clearable>
              <el-option
                  v-for="item in workerList"
                  v-for="item in spList.jhList"
                  :key="item.uid"
                  :label="item.username"
                  :label="item.realName"
                  :value="item.uid"
              />
            </el-select>
@@ -229,7 +229,7 @@
        <el-row>
          <el-col :span="12">
            <el-form-item label="安全措施确认人" prop="safetyMeasureUids">
              <el-select v-model="form.safetyMeasureUids" multiple clearable>
              <el-select v-model="form.safetyMeasureUids" filterable multiple clearable>
                <el-option
                    v-for="item in workerList"
                    :key="item.uid"
@@ -276,7 +276,7 @@
            </el-table-column>
            <el-table-column prop="approvalUids" label="审批人" align="center">
              <template #default="scope">
                <el-select v-model="scope.row.approvalUids" multiple :disabled="isFirstRow(scope.$index)" clearable>
                <el-select v-model="scope.row.approvalUids" filterable multiple :disabled="isFirstRow(scope.$index)" clearable>
                  <el-option
                      v-for="item in workerList"
                      :key="item.uid"
@@ -291,7 +291,7 @@
        <el-row>
          <el-col :span="12">
            <el-form-item label="完工验收" prop="acceptUid">
              <el-select v-model="form.acceptUid" clearable>
              <el-select v-model="form.acceptUid" filterable clearable>
                <el-option
                    v-for="item in workerList"
                    :key="item.uid"
@@ -303,7 +303,7 @@
          </el-col>
          <el-col :span="12">
            <el-form-item label="现场开始结束确认人" prop="startOrEndUids">
              <el-select v-model="form.startOrEndUids" multiple clearable>
              <el-select v-model="form.startOrEndUids" filterable multiple clearable>
                <el-option
                    v-for="item in workerList"
                    :key="item.uid"
@@ -345,7 +345,7 @@
    export default defineComponent({
        name: 'hoistForm',
        components: {workSelect},
        props:['departList','departList2','workerList','deviceList','otherWorks'],
        props:['departList','departList2','workerList','deviceList','otherWorks','spList'],
        setup(props: any, context: any) {
            const userInfo = useUserInfo()
            const { userInfos } = storeToRefs(userInfo);
@@ -417,7 +417,6 @@
        workDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        headUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        analystUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        involveOtherWork: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        guardianUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        riskIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
src/views/newSpecialWorkSystem/workTicket/zysq/components/plate.vue
@@ -144,18 +144,18 @@
      <el-row>
        <el-col :span="12">
          <el-form-item label="作业人及证件编号" prop="operatorUids">
            <el-select v-model="form.operatorUids" multiple clearable>
            <el-select v-model="form.operatorUids" filterable multiple clearable>
              <el-option
                  v-for="item in workerList"
                  v-for="item in spList.opList"
                  :key="item.uid"
                  :label="item.username"
                  :label="item.realName"
                  :value="item.uid"
              />
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="12" class="valueSelect">
          <el-form-item label="关联其他特殊作业" prop="involveOtherWork">
          <el-form-item label="关联其他特殊作业">
<!--            <el-select v-model="form.involveOtherWork" multiple clearable>-->
<!--              <el-option-->
<!--                  v-for="item in otherWorkList"-->
@@ -179,7 +179,7 @@
        </el-col>
        <el-col :span="12">
          <el-form-item label="作业负责人" prop="headUids">
            <el-select v-model="form.headUids" multiple @change="getStartEndIds" clearable>
            <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>
              <el-option
                  v-for="item in workerList"
                  :key="item.uid"
@@ -193,11 +193,11 @@
      <el-row>
        <el-col :span="12">
          <el-form-item label="监护人" prop="guardianUids">
            <el-select v-model="form.guardianUids" multiple @change="getSafetyIds" clearable>
            <el-select v-model="form.guardianUids" multiple filterable @change="getSafetyIds" clearable>
              <el-option
                  v-for="item in workerList"
                  v-for="item in spList.jhList"
                  :key="item.uid"
                  :label="item.username"
                  :label="item.realName"
                  :value="item.uid"
              />
            </el-select>
@@ -292,7 +292,7 @@
        <el-row>
          <el-col :span="12">
            <el-form-item label="安全措施确认人" prop="safetyMeasureUids">
              <el-select v-model="form.safetyMeasureUids" multiple clearable>
              <el-select v-model="form.safetyMeasureUids" filterable multiple clearable>
                <el-option
                    v-for="item in workerList"
                    :key="item.uid"
@@ -319,7 +319,7 @@
            </el-table-column>
            <el-table-column prop="approvalUids" label="审批人" align="center">
              <template #default="scope">
                <el-select v-model="scope.row.approvalUids" multiple :disabled="isFirstRow(scope.$index)" clearable>
                <el-select v-model="scope.row.approvalUids" filterable multiple :disabled="isFirstRow(scope.$index)" clearable>
                  <el-option
                      v-for="item in workerList"
                      :key="item.uid"
@@ -334,7 +334,7 @@
        <el-row>
          <el-col :span="12">
            <el-form-item label="完工验收" prop="acceptUid">
              <el-select v-model="form.acceptUid" clearable>
              <el-select v-model="form.acceptUid" filterable clearable>
                <el-option
                    v-for="item in workerList"
                    :key="item.uid"
@@ -346,7 +346,7 @@
          </el-col>
          <el-col :span="12">
            <el-form-item label="现场开始结束确认人" prop="startOrEndUids">
              <el-select v-model="form.startOrEndUids" multiple clearable>
              <el-select v-model="form.startOrEndUids" filterable multiple clearable>
                <el-option
                    v-for="item in workerList"
                    :key="item.uid"
@@ -398,7 +398,7 @@
    export default defineComponent({
        name: 'fireForm',
        components: {workSelect},
        props:['departList','departList2','workerList','deviceList','otherWorks'],
        props:['departList','departList2','workerList','deviceList','otherWorks','spList'],
        setup(props: any, context: any) {
            const userInfo = useUserInfo()
            const { userInfos } = storeToRefs(userInfo);
@@ -477,7 +477,6 @@
        operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        workDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        headUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        involveOtherWork: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        guardianUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        riskIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
src/views/newSpecialWorkSystem/workTicket/zysq/components/power.vue
@@ -79,11 +79,11 @@
        <el-row>
          <el-col :span="12">
            <el-form-item label="作业人及证件编号" prop="operatorUids">
              <el-select v-model="form.operatorUids" multiple clearable>
              <el-select v-model="form.operatorUids" filterable multiple clearable>
                <el-option
                    v-for="item in workerList"
                    v-for="item in spList.opList"
                    :key="item.uid"
                    :label="item.username"
                    :label="item.realName"
                    :value="item.uid"
                />
              </el-select>
@@ -98,7 +98,7 @@
        </el-col>
        <el-col :span="12">
          <el-form-item label="作业负责人" prop="headUids">
            <el-select v-model="form.headUids" multiple @change="getStartEndIds" clearable>
            <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>
              <el-option
                  v-for="item in workerList"
                  :key="item.uid"
@@ -112,7 +112,7 @@
      <el-row>
        <el-col :span="12">
          <el-form-item label="分析人" prop="analystUids">
            <el-select v-model="form.analystUids" multiple clearable>
            <el-select v-model="form.analystUids" filterable multiple clearable>
              <el-option
                  v-for="item in workerList"
                  :key="item.uid"
@@ -123,7 +123,7 @@
          </el-form-item>
        </el-col>
        <el-col :span="12" class="valueSelect">
          <el-form-item label="关联其他特殊作业" prop="involveOtherWork">
          <el-form-item label="关联其他特殊作业">
<!--            <el-select v-model="form.involveOtherWork" multiple clearable>-->
<!--              <el-option-->
<!--                  v-for="item in otherWorkList"-->
@@ -142,11 +142,11 @@
      <el-row>
        <el-col :span="12">
          <el-form-item label="监护人" prop="guardianUids">
            <el-select v-model="form.guardianUids" multiple @change="getSafetyIds" clearable>
            <el-select v-model="form.guardianUids" multiple filterable @change="getSafetyIds" clearable>
              <el-option
                  v-for="item in workerList"
                  v-for="item in spList.jhList"
                  :key="item.uid"
                  :label="item.username"
                  :label="item.realName"
                  :value="item.uid"
              />
            </el-select>
@@ -243,7 +243,7 @@
        <el-row>
          <el-col :span="12">
            <el-form-item label="安全措施确认人" prop="safetyMeasureUids">
              <el-select v-model="form.safetyMeasureUids" multiple clearable>
              <el-select v-model="form.safetyMeasureUids" filterable multiple clearable>
                <el-option
                    v-for="item in workerList"
                    :key="item.uid"
@@ -290,7 +290,7 @@
            </el-table-column>
            <el-table-column prop="approvalUids" label="审批人" align="center">
              <template #default="scope">
                <el-select v-model="scope.row.approvalUids" multiple :disabled="isFirstRow(scope.$index)" clearable>
                <el-select v-model="scope.row.approvalUids" filterable multiple :disabled="isFirstRow(scope.$index)" clearable>
                  <el-option
                      v-for="item in workerList"
                      :key="item.uid"
@@ -305,7 +305,7 @@
        <el-row>
          <el-col :span="12">
            <el-form-item label="完工验收" prop="acceptUid">
              <el-select v-model="form.acceptUid" clearable>
              <el-select v-model="form.acceptUid" filterable clearable>
                <el-option
                    v-for="item in workerList"
                    :key="item.uid"
@@ -317,7 +317,7 @@
          </el-col>
          <el-col :span="12">
            <el-form-item label="现场开始结束确认人" prop="startOrEndUids">
              <el-select v-model="form.startOrEndUids" multiple clearable>
              <el-select v-model="form.startOrEndUids" filterable multiple clearable>
                <el-option
                    v-for="item in workerList"
                    :key="item.uid"
@@ -358,7 +358,7 @@
    export default defineComponent({
        name: 'powerForm',
        components: {workSelect},
        props:['departList','departList2','workerList','deviceList','otherWorks'],
        props:['departList','departList2','workerList','deviceList','otherWorks','spList'],
        setup(props: any, context: any) {
            const userInfo = useUserInfo()
            const { userInfos } = storeToRefs(userInfo);
@@ -417,7 +417,6 @@
        workDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        headUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        analystUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        involveOtherWork: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        guardianUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        riskIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
src/views/newSpecialWorkSystem/workTicket/zysq/components/space.vue
@@ -44,11 +44,11 @@
        </el-col>
        <el-col :span="12">
          <el-form-item label="作业人" prop="operatorUids">
            <el-select v-model="form.operatorUids" multiple clearable>
            <el-select v-model="form.operatorUids" filterable multiple clearable>
              <el-option
                  v-for="item in workerList"
                  v-for="item in spList.opList"
                  :key="item.uid"
                  :label="item.username"
                  :label="item.realName"
                  :value="item.uid"
              />
            </el-select>
@@ -75,7 +75,7 @@
        </el-col>
        <el-col :span="12">
          <el-form-item label="作业负责人" prop="headUids">
            <el-select v-model="form.headUids" multiple @change="getStartEndIds" clearable>
            <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>
              <el-option
                  v-for="item in workerList"
                  :key="item.uid"
@@ -89,7 +89,7 @@
      <el-row>
        <el-col :span="12">
          <el-form-item label="分析人" prop="analystUids">
            <el-select v-model="form.analystUids" multiple clearable>
            <el-select v-model="form.analystUids" filterable multiple clearable>
              <el-option
                  v-for="item in workerList"
                  :key="item.uid"
@@ -100,7 +100,7 @@
          </el-form-item>
        </el-col>
        <el-col :span="12" class="valueSelect">
          <el-form-item label="关联其他特殊作业" prop="involveOtherWork">
          <el-form-item label="关联其他特殊作业">
            <el-select v-model="form.involveOtherWork" multiple clearable :teleported="false" @click="openWorkSelect">
              <el-option v-for="item in otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId">
              </el-option>
@@ -111,11 +111,11 @@
      <el-row>
        <el-col :span="12">
          <el-form-item label="监护人" prop="guardianUids">
            <el-select v-model="form.guardianUids" multiple @change="getSafetyIds" clearable>
            <el-select v-model="form.guardianUids" multiple filterable @change="getSafetyIds" clearable>
              <el-option
                  v-for="item in workerList"
                  v-for="item in spList.jhList"
                  :key="item.uid"
                  :label="item.username"
                  :label="item.realName"
                  :value="item.uid"
              />
            </el-select>
@@ -202,7 +202,7 @@
        <el-row>
          <el-col :span="12">
            <el-form-item label="安全措施确认人" prop="safetyMeasureUids">
              <el-select v-model="form.safetyMeasureUids" multiple clearable>
              <el-select v-model="form.safetyMeasureUids" filterable multiple clearable>
                <el-option
                    v-for="item in workerList"
                    :key="item.uid"
@@ -229,7 +229,7 @@
            </el-table-column>
            <el-table-column prop="approvalUids" label="审批人" align="center">
              <template #default="scope">
                <el-select v-model="scope.row.approvalUids" multiple :disabled="isFirstRow(scope.$index)" clearable>
                <el-select v-model="scope.row.approvalUids" filterable multiple :disabled="isFirstRow(scope.$index)" clearable>
                  <el-option
                      v-for="item in workerList"
                      :key="item.uid"
@@ -244,7 +244,7 @@
        <el-row>
          <el-col :span="12">
            <el-form-item label="完工验收" prop="acceptUid">
              <el-select v-model="form.acceptUid" clearable>
              <el-select v-model="form.acceptUid" filterable clearable>
                <el-option
                    v-for="item in workerList"
                    :key="item.uid"
@@ -256,7 +256,7 @@
          </el-col>
          <el-col :span="12">
            <el-form-item label="现场开始结束确认人" prop="startOrEndUids">
              <el-select v-model="form.startOrEndUids" multiple clearable>
              <el-select v-model="form.startOrEndUids" filterable multiple clearable>
                <el-option
                    v-for="item in workerList"
                    :key="item.uid"
@@ -297,7 +297,7 @@
    export default defineComponent({
        name: 'spaceForm',
        components: {workSelect},
        props:['departList','departList2','workerList','deviceList', 'otherWorks'],
        props:['departList','departList2','workerList','deviceList', 'otherWorks','spList'],
        setup(props: any, context: any) {
            const userInfo = useUserInfo()
            const { userInfos } = storeToRefs(userInfo);
@@ -354,7 +354,6 @@
        workDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        headUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        analystUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        involveOtherWork: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        guardianUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        riskIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
        cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
src/views/newSpecialWorkSystem/workTicket/zysq/index.vue
@@ -2,28 +2,28 @@
    <div class="home-container">
        <el-tabs type="border-card" v-model="activeName" @tab-click="handleClick">
            <el-tab-pane label="动火作业" name="fire">
                <fire-form ref="fire" :workerList = allWorkers :deviceList = allDevices :departList=departmentList :departList2=departmentList2 :otherWorks="otherWorks"></fire-form>
                <fire-form ref="fire" :workerList = allWorkers :deviceList = allDevices :departList=departmentList :departList2=departmentList2 :otherWorks="otherWorks" :spList="spList"></fire-form>
            </el-tab-pane>
            <el-tab-pane label="受限空间作业" name="space">
                <space-form ref="space" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices :otherWorks="otherWorks"></space-form>
                <space-form ref="space" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices :otherWorks="otherWorks" :spList="spList"></space-form>
            </el-tab-pane>
            <el-tab-pane label="吊装作业" name="hoist">
                <hoist-form ref="hoist" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices :otherWorks="otherWorks"></hoist-form>
                <hoist-form ref="hoist" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices :otherWorks="otherWorks" :spList="spList"></hoist-form>
            </el-tab-pane>
            <el-tab-pane label="动土作业" name="ground">
                <ground-form ref="ground" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices :otherWorks="otherWorks"></ground-form>
                <ground-form ref="ground" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices :otherWorks="otherWorks" :spList="spList"></ground-form>
            </el-tab-pane>
            <el-tab-pane label="断路作业" name="broken">
                <broken-form ref="broken" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices :otherWorks="otherWorks"></broken-form>
                <broken-form ref="broken" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices :otherWorks="otherWorks" :spList="spList"></broken-form>
            </el-tab-pane>
            <el-tab-pane label="高处作业" name="height">
                <height-form ref="height" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices :otherWorks="otherWorks"></height-form>
                <height-form ref="height" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices :otherWorks="otherWorks" :spList="spList"></height-form>
            </el-tab-pane>
            <el-tab-pane label="临时用电作业" name="power">
                <power-form ref="power" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices :otherWorks="otherWorks"></power-form>
                <power-form ref="power" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices :otherWorks="otherWorks" :spList="spList"></power-form>
            </el-tab-pane>
            <el-tab-pane label="盲板抽堵作业" name="plate">
                <plate-form ref="plate" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices :otherWorks="otherWorks"></plate-form>
                <plate-form ref="plate" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices :otherWorks="otherWorks" :spList="spList"></plate-form>
            </el-tab-pane>
        </el-tabs>
<!--    <material-dialog ref="material"></material-dialog>-->
@@ -49,6 +49,11 @@
    departmentList2: Array<any>
    otherWorks: Array<any>
    allDevices: Array<any>
    spList:{
      opList: Array<any>
      jhList: Array<any>
      sfList: Array<any>
    }
    }
    export default defineComponent({
        name: 'apply',
@@ -71,7 +76,12 @@
                departmentList: [],
        departmentList2:[],
        otherWorks: [],
        allDevices: []
        allDevices: [],
        spList:{
          opList: [],
          jhList: [],
          sfList: []
        }
            });
      const fire = ref()
      const space = ref()
@@ -98,7 +108,8 @@
        getAll();
        getAllDepartment();
        getAllDevice();
        getOtherWork()
        getOtherWork();
        spWorker()
      });
            // 获取用户列表
@@ -114,6 +125,42 @@
                }
            };
      const spWorker = async ()=>{
        for(let id of ['17','18','19']){
          const res = await workApplyApi().getSpList({roleId: id})
          if(id == '17'){
            if (res.data.code === '200') {
              state.spList.opList = res.data.data
            } else {
              ElMessage({
                type: 'warning',
                message: res.data.msg
              });
            }
          }
          if(id == '18'){
            if (res.data.code === '200') {
              state.spList.jhList = res.data.data
            } else {
              ElMessage({
                type: 'warning',
                message: res.data.msg
              });
            }
          }
          if(id == '19'){
            if (res.data.code === '200') {
              state.spList.sfList = res.data.data
            } else {
              ElMessage({
                type: 'warning',
                message: res.data.msg
              });
            }
          }
        }
      }
            // 获取部门列表
            const getAllDepartment = async () => {
                let res = await teamManageApi().getAllDepartment();
src/views/system/certificate/component/certificateDialog.vue
对比新文件
@@ -0,0 +1,138 @@
<template>
    <div class="system-add-role-container">
        <el-dialog :title="title" v-model="isShowDialog" width="769px">
            <el-form :model="roleForm" size="default" label-width="90px">
                <el-row :gutter="35">
                    <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
                        <el-form-item label="证书名称">
                            <el-input v-model="roleForm.name" placeholder="请输入证书名称" clearable style="width: 100%"></el-input>
                        </el-form-item>
                    </el-col>
                </el-row>
            </el-form>
            <template #footer>
                <span class="dialog-footer">
                    <el-button @click="isShowDialog = !isShowDialog" size="default">取 消</el-button>
                    <el-button type="primary" @click="onSubmit" v-throttle size="default">{{ buttonName }}</el-button>
                </span>
            </template>
        </el-dialog>
    </div>
</template>
<script lang="ts">
import { ElMessage } from 'element-plus';
import { reactive, toRefs, defineComponent } from 'vue';
import {certApi} from "/@/api/systemManage/certificate";
// 定义接口来定义对象的类型
interface MenuDataTree {
    id: number;
    label: string;
    children?: MenuDataTree[];
}
interface RoleState {
    title: string;
    buttonName: string;
    isShowDialog: boolean;
    roleForm: {
      id: null | number
      name: string;
    };
    menuData: Array<MenuDataTree>;
    menuProps: {
        children: string;
        label: string;
    };
}
export default defineComponent({
    name: 'certificateDialog',
    setup(prop, context) {
        const state = reactive<RoleState>({
            isShowDialog: false,
            title: '',
            buttonName: '',
            roleForm: {
                id: null,
                name: '', // 证书名称
            },
            menuData: [],
            menuProps: {
                children: 'children',
                label: 'label'
            }
        });
        // 打开弹窗
        const openDialog = (type: string, value: any) => {
            state.isShowDialog = true;
            if (type === '新增') {
                state.title = '新增证书';
                state.buttonName = '新增';
                state.roleForm = {
                  id: null,
                  name: ''
                };
            } else {
                state.title = '修改证书';
                state.buttonName = '修改';
                state.roleForm.id = JSON.parse(JSON.stringify(value)).id
                state.roleForm.name = JSON.parse(JSON.stringify(value)).name
            }
        };
        // 新增
        const onSubmit = async () => {
            if (state.title === '新增证书') {
                let res = await certApi().addCerttype({name: state.roleForm.name});
                if (res.data.code === '200') {
                    ElMessage({
                        type: 'success',
                        message: '证书新增成功',
                        duration: 2000
                    });
                    state.isShowDialog = false;
                    context.emit('refreshCertList');
                } else {
                    ElMessage({
                        type: 'warning',
                        message: res.data.msg
                    });
                }
            } else {
                let res = await certApi().modCerttype(state.roleForm);
                if (res.data.code === '200') {
                    ElMessage({
                        type: 'success',
                        message: '证书修改成功',
                        duration: 2000
                    });
                    state.isShowDialog = false;
                    context.emit('refreshCertList');
                } else {
                    ElMessage({
                        type: 'warning',
                        message: res.data.msg
                    });
                }
            }
        };
        // 获取菜单结构数据
        return {
            onSubmit,
            openDialog,
            ...toRefs(state)
        };
    }
});
</script>
<style scoped lang="scss">
.system-add-role-container {
    .menu-data-tree {
        width: 100%;
        border: 1px solid var(--el-border-color);
        border-radius: var(--el-input-border-radius, var(--el-border-radius-base));
        padding: 5px;
    }
}
</style>
src/views/system/certificate/component/certificateMember.vue
对比新文件
@@ -0,0 +1,214 @@
<template>
  <el-dialog v-model="dialogCertificate" :title="title">
    <div class="system-user-search mb15">
      <el-input size="default" v-model.trim="listQuery.searchParams.userName" placeholder="请输入用户名" style="max-width: 180px"> </el-input>
      <el-button size="default" type="primary" class="ml10" @click="handleSearch">
        <el-icon>
          <ele-Search />
        </el-icon>
        查询
      </el-button>
    </div>
    <el-table
        :data="tableData"
        highlight-current-row
        style="width: 100%;margin-top: 20px"
        border
        :header-cell-style="{background: '#fafafa'}"
    >
      <el-table-column property="userName" label="姓名"/>
      <el-table-column property="depName" label="所属部门"/>
      <el-table-column property="certTypeName" label="证书类型"/>
      <el-table-column property="certExpiredAt" label="到期时间"/>
    </el-table>
    <br />
    <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" class="page-position" :pager-count="5" :page-sizes="[10]" v-model:current-page="listQuery.pageIndex" background v-model:page-size="listQuery.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total"> </el-pagination>
    <br />
    <br />
  </el-dialog>
</template>
<script lang="ts">
    import {toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted} from 'vue';
    import { storeToRefs } from 'pinia';
    import { initBackEndControlRoutes } from '/@/router/backEnd';
    import {useUserInfo} from "/@/stores/userInfo";
    import { Session } from '/@/utils/storage';
    import { Search, Delete, Edit, View, Plus } from '@element-plus/icons-vue'
  import {ElMessage, ElMessageBox, ElTable} from 'element-plus'
  import {certApi} from "/@/api/systemManage/certificate";
    interface stateType {
    title: string
    dialogCertificate: boolean
    tableData: Array<any>
    listQuery: {
      pageIndex: number
      pageSize: number
      searchParams: {
        userName: string
        certTypeId: number | null
      }
    }
    total: number | null
    }
    export default defineComponent({
        name: 'certificateMember',
        components: {},
        props:[],
        setup() {
            const userInfo = useUserInfo()
            const { userInfos } = storeToRefs(userInfo);
            const state  = reactive<stateType>({
        title: '',
        dialogCertificate: false,
        tableData: [],
        total: null,
        listQuery: {
          pageIndex: 1,
          pageSize: 10,
          searchParams: {
            userName:'',
            certTypeId: null
          }
        }
            });
            // 页面载入时执行方法
            onMounted(() => {
            });
      const ctfRef = ref()
      const openDialog = (type:string,value: any) => {
        state.tableData = []
        state.total = null
        state.listQuery.searchParams.certTypeId = value.id
        state.dialogCertificate = true
        if(type == '人员'){
          state.title = '证书人员'
          getUserData()
        }else{
          state.title = '证书即将到期'
          getUnvalidData()
        }
      }
      const getUserData = async () => {
        let res = await certApi().getCertUsers(state.listQuery);
        if (res.data.code === '200') {
          state.tableData = res.data.data
          state.total = res.data.total
        } else {
          ElMessage({
            type: 'warning',
            message: res.data.msg
          });
        }
      }
      const getUnvalidData = async () => {
        let res = await certApi().getCertUnvalid(state.listQuery);
        if (res.data.code === '200') {
          state.tableData = res.data.data
          state.total = res.data.total
        } else {
          ElMessage({
            type: 'warning',
            message: res.data.msg
          });
        }
      }
      const onHandleSizeChange = (val: number) => {
        state.listQuery.pageSize = val;
        if(state.title == '证书人员'){
          getUserData();
        }else{
          getUnvalidData()
        }
      }
      const onHandleCurrentChange = (val: number) => {
        state.listQuery.pageIndex = val;
        if(state.title == '证书人员'){
          getUserData();
        }else{
          getUnvalidData()
        }
      }
      const handleSearch = () => {
        state.listQuery.pageIndex = 1
        if(state.title == '证书人员'){
          getUserData();
        }else{
          getUnvalidData()
        }
      }
            const renderMenu = async (value: string) => {
                Session.set('projectId',value)
                userInfos.value.projectId = value
                await initBackEndControlRoutes();
            };
            return {
                renderMenu,
        openDialog,
        ctfRef,
                Search,
        Delete,
        Edit,
        View,
        Plus,
        onHandleSizeChange,
        onHandleCurrentChange,
        handleSearch,
                ...toRefs(state),
            };
        },
    });
</script>
<style scoped lang="scss">
    .home-container {
        height: 100%;
        overflow: hidden;
        position: relative;
        .homeCard{
            width: 100%;
            padding: 0 20px;
            box-sizing: border-box;
            background: #fff;
            border-radius: 4px;
        }
        .applyBtn{
            width: 100%;
            background: #fff;
            padding-top: 15px;
            z-index: 5;
            box-shadow: 0 -3px 8px rgba(150,150,150,.1);
            display: flex;
            align-items: center;
            justify-content: center;
        }
        .el-row{
            margin-bottom: 20px;
        }
        .el-row:last-child {
            margin-bottom: 0;
        }
        .el-input{
            width: 100% !important;
        }
        .el-date-editor::v-deep{
            width: 100%;
        }
        .el-select{
            width: 100%;
        }
        .el-cascader{
            width: 100% !important;
        }
    }
</style>
src/views/system/certificate/component/messages.vue
对比新文件
@@ -0,0 +1,148 @@
<template>
  <el-dialog v-model="dialogMes" :title="title">
    <el-table
        :data="tableData"
        highlight-current-row
        style="width: 100%;margin-top: 20px"
        border
        :header-cell-style="{background: '#fafafa'}"
    >
      <el-table-column property="id" label="发送时间"/>
      <el-table-column property="roleId" label="预警信息内容"/>
      <el-table-column property="workTypeDesc" label="预警级别"/>
      <el-table-column property="roleId" label="接收人">
        <template #default="scope">
          {{ roleList.find(i=>i.roleId == scope.row.roleId)?.roleName }}
        </template>
      </el-table-column>
    </el-table>
  </el-dialog>
</template>
<script lang="ts">
    import {toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted} from 'vue';
    import { storeToRefs } from 'pinia';
    import { initBackEndControlRoutes } from '/@/router/backEnd';
    import {useUserInfo} from "/@/stores/userInfo";
    import { Session } from '/@/utils/storage';
    import { Search, Delete, Edit, View, Plus } from '@element-plus/icons-vue'
  import {ElMessage, ElMessageBox, ElTable} from 'element-plus'
    import {userApi} from "/@/api/systemManage/user";
    interface stateType {
    title: string
    dialogMes: boolean
    tableData: Array<any>
    roleList: Array<any>
    uid: number | null
    }
    export default defineComponent({
        name: 'historyMessages',
        components: {},
        props:[],
        setup() {
            const userInfo = useUserInfo()
            const { userInfos } = storeToRefs(userInfo);
            const state  = reactive<stateType>({
        title: '',
        dialogMes: false,
        tableData: [],
        roleList: [],
        uid: null
            });
            // 页面载入时执行方法
            onMounted(() => {
            });
      const ctfRef = ref()
      const openDialog = (value: any) => {
        state.dialogMes = true
      }
      // const getRoleData = async () => {
      //   let res = await useRoleApi().getRoleList();
      //   if (res.data.code === '200') {
      //     state.roleList = res.data.data;
      //   } else {
      //     ElMessage({
      //       type: 'warning',
      //       message: res.data.msg
      //     });
      //   }
      // };
      //
      // const getCtf = async()=>{
      //   let res = await userApi().getCtf({uid: state.uid})
      //   if(res.data.code == 200){
      //     state.tableData = res.data.data
      //   }else{
      //     ElMessage({
      //       type: 'warning',
      //       message: res.data.msg
      //     })
      //   }
      // }
            const renderMenu = async (value: string) => {
                Session.set('projectId',value)
                userInfos.value.projectId = value
                await initBackEndControlRoutes();
            };
            return {
                renderMenu,
        openDialog,
        ctfRef,
                Search,
        Delete,
        Edit,
        View,
        Plus,
                ...toRefs(state),
            };
        },
    });
</script>
<style scoped lang="scss">
    .home-container {
        height: 100%;
        overflow: hidden;
        position: relative;
        .homeCard{
            width: 100%;
            padding: 0 20px;
            box-sizing: border-box;
            background: #fff;
            border-radius: 4px;
        }
        .applyBtn{
            width: 100%;
            background: #fff;
            padding-top: 15px;
            z-index: 5;
            box-shadow: 0 -3px 8px rgba(150,150,150,.1);
            display: flex;
            align-items: center;
            justify-content: center;
        }
        .el-row{
            margin-bottom: 20px;
        }
        .el-row:last-child {
            margin-bottom: 0;
        }
        .el-input{
            width: 100% !important;
        }
        .el-date-editor::v-deep{
            width: 100%;
        }
        .el-select{
            width: 100%;
        }
        .el-cascader{
            width: 100% !important;
        }
    }
</style>
src/views/system/certificate/index.vue
对比新文件
@@ -0,0 +1,201 @@
<template>
    <div class="system-role-container">
        <el-card shadow="hover">
            <div class="system-user-search mb15">
                <el-input size="default" v-model.trim="listQuery.searchParams.name" placeholder="请输入证书类型" style="max-width: 180px"> </el-input>
                <el-button size="default" type="primary" class="ml10" @click="handleSearch">
                    <el-icon>
                        <ele-Search />
                    </el-icon>
                    查询
                </el-button>
                <el-button size="default" type="success" class="ml10" @click="onOpenDialogRef('新增', '')">
                    <el-icon>
                        <ele-FolderAdd />
                    </el-icon>
                    新增
                </el-button>
            </div>
            <el-table :data="tableData.data" style="width: 100%">
                <el-table-column prop="name" label="证书类型" show-overflow-tooltip></el-table-column>
                <el-table-column prop="personCount" label="关联证书人员" show-overflow-tooltip>
                  <template #default="scope">
                    <el-button v-if="scope.row.personCount && scope.row.personCount>0" link type="primary" @click="openMembers('人员',scope.row)">{{scope.row.personCount}}</el-button>
                    <span v-else>0</span>
                  </template>
                </el-table-column>
                <el-table-column prop="unValidCount" label="三个月证书到期" show-overflow-tooltip>
                  <template #default="scope">
                    <el-button v-if="scope.row.unValidCount && scope.row.unValidCount>0" link type="danger" @click="openMembers('到期',scope.row)">{{scope.row.unValidCount}}</el-button>
                    <span v-else>0</span>
                  </template>
                </el-table-column>
<!--                <el-table-column prop="warnCount" label="历史预警信息" show-overflow-tooltip>-->
<!--                  <template #default="scope">-->
<!--                    <el-button v-if="scope.row.warnCount && scope.row.warnCount>0" link type="danger" @click="openMes(scope.row)">{{scope.row.warnCount}}</el-button>-->
<!--                    <span v-else>0</span>-->
<!--                  </template>-->
<!--                </el-table-column>-->
                <el-table-column label="操作" width="150">
                    <template #default="scope">
                        <el-button size="small" text type="primary" @click="onOpenDialogRef('修改', scope.row)">修改</el-button>
                        <el-button size="small" style="color: red" text type="primary" @click="onRowDel(scope.row)">删除</el-button>
                    </template>
                </el-table-column>
            </el-table>
            <br />
            <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" class="page-position" :pager-count="5" :page-sizes="[10]" v-model:current-page="listQuery.pageIndex" background v-model:page-size="listQuery.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="tableData.total"> </el-pagination>
            <br />
            <br />
        </el-card>
        <certificateDialog ref="certificateRef" @refreshCertList="initRoleTableData" />
        <certificate-member ref="certificateMemRef"></certificate-member>
        <messages ref="mesRef"></messages>
    </div>
</template>
<script lang="ts">
import { toRefs, reactive, onMounted, ref, defineComponent } from 'vue';
import { ElMessageBox, ElMessage } from 'element-plus';
import certificateDialog from '/@/views/system/certificate/component/certificateDialog.vue'
import certificateMember from '/@/views/system/certificate/component/certificateMember.vue'
import messages from '/@/views/system/certificate/component/messages.vue'
import { certApi } from '/@/api/systemManage/certificate';
import { useMenuApi } from '/@/api/systemManage/menu';
import { Session } from '/@/utils/storage';
import { initBackEndControlRoutes } from '/@/router/backEnd';
import {useUserInfo} from "/@/stores/userInfo";
import {storeToRefs} from "pinia";
// 定义接口来定义对象的类型
interface TableData {
    roleName: string;
    roleSign: string;
    describe: string;
    sort: number;
    status: boolean;
    createTime: string;
}
interface TableDataState {
    tableData: {
        data: Array<TableData>;
        total: number;
        loading: boolean;
    };
  listQuery: {
    pageIndex: number
    pageSize: number
    searchParams: {
      name: string
    }
  };
}
export default defineComponent({
    name: 'certificate',
    components: {messages, certificateMember, certificateDialog },
    setup() {
        const userInfo = useUserInfo();
        const { userInfos } = storeToRefs(userInfo);
        const certificateRef = ref();
        const certificateMemRef = ref();
        const mesRef = ref();
        const state = reactive<TableDataState>({
            tableData: {
                data: [],
                total: 0,
                loading: false,
            },
          listQuery: {
            pageIndex: 1,
            pageSize: 10,
            searchParams: {
              name:''
            }
          }
        });
        // 初始化表格数据
        const initRoleTableData = async () => {
            let res = await certApi().getCerttypeList(state.listQuery);
            if (res.data.code === '200') {
                state.tableData.data = res.data.data;
                state.tableData.total = res.data.total
            } else {
                ElMessage({
                    type: 'warning',
                    message: res.data.msg
                });
            }
        };
        const onOpenDialogRef = (type: string, value: any) => {
            certificateRef.value.openDialog(type, value);
        };
        const openMembers = (type: string, value: any) => {
          certificateMemRef.value.openDialog(type,value)
        }
      const openMes = (value: any) => {
        mesRef.value.openDialog(value)
      }
        const onRowDel = (row: any) => {
            ElMessageBox.confirm(`此操作将永久删除角色名称:“${row.name}”,是否继续?`, '提示', {
                confirmButtonText: '确认',
                cancelButtonText: '取消',
                type: 'warning'
            })
                .then(async () => {
                    let res = await certApi().deleteCerttype(row.id);
                    if (res.data.code === '200') {
                        ElMessage({
                            type: 'success',
                            duration: 2000,
                            message: '删除成功'
                        });
                        await initRoleTableData();
                    } else {
                        ElMessage({
                            type: 'warning',
                            message: res.data.msg
                        });
                    }
                })
                .catch(() => {});
        };
        const handleSearch = () => {
            state.listQuery.pageIndex = 1
            initRoleTableData();
        };
      // 分页改变
      const onHandleSizeChange = (val: number) => {
        state.listQuery.pageSize = val;
        initRoleTableData();
      };
      // 分页改变
      const onHandleCurrentChange = (val: number) => {
        state.listQuery.pageIndex = val;
        initRoleTableData();
      };
        // 页面加载时
        onMounted(() => {
            initRoleTableData();
        });
        return {
            onRowDel,
            handleSearch,
            certificateRef,
          certificateMemRef,
          mesRef,
            onOpenDialogRef,
          openMembers,
            openMes,
            initRoleTableData,
            onHandleSizeChange,
            onHandleCurrentChange,
            ...toRefs(state)
        };
    }
});
</script>