yanghao 1 dag sedan
förälder
incheckning
5459fd2bf4

+ 1 - 1
.env.local

@@ -4,7 +4,7 @@ NODE_ENV=development
 VITE_DEV=true
 
 # 请求路径  http://192.168.188.79:48080  https://iot.deepoil.cc  http://172.26.0.56:48080
-VITE_BASE_URL='https://iot.deepoil.cc'
+VITE_BASE_URL='http://172.26.0.56:48080'
 
 # 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持 S3 服务
 VITE_UPLOAD_TYPE=server

+ 248 - 2
src/views/pms/qhse/certPerson/CertPersonForm.vue

@@ -32,6 +32,230 @@
       <el-form-item label="备注" prop="remark">
         <el-input type="textarea" v-model="formData.remark" placeholder="请输入备注" />
       </el-form-item>
+
+      <el-divider>是否需要相关证书</el-divider>
+
+      <!-- <div class="flex flex-wrap items-center justify-between">
+        <el-form-item label="硫化氢证" prop="lsh">
+          <el-select v-model="formData.lsh" placeholder="请选择" clearable style="width: 150px">
+            <el-option
+              v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value" />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="井控证" prop="jk">
+          <el-select v-model="formData.jk" placeholder="请选择" clearable style="width: 150px">
+            <el-option
+              v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value" />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="HSE证" prop="hse">
+          <el-select v-model="formData.hse" placeholder="请选择" clearable style="width: 150px">
+            <el-option
+              v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value" />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="司钻证" prop="sz">
+          <el-select v-model="formData.sz" placeholder="请选择" clearable style="width: 150px">
+            <el-option
+              v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value" />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="高处作业证" prop="gczy">
+          <el-select v-model="formData.gczy" placeholder="请选择" clearable style="width: 150px">
+            <el-option
+              v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value" />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="电工证" prop="dg">
+          <el-select v-model="formData.dg" placeholder="请选择" clearable style="width: 150px">
+            <el-option
+              v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value" />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item
+          label="连续油管主操证"
+          prop="lxygzc"
+          label-width="auto"
+          style="margin-left: -5px">
+          <el-select v-model="formData.lxygzc" placeholder="请选择" clearable style="width: 150px">
+            <el-option
+              v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value" />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="吊装证" prop="dz">
+          <el-select v-model="formData.dz" placeholder="请选择" clearable style="width: 150px">
+            <el-option
+              v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value" />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="特种作业证" prop="tzzy">
+          <el-select v-model="formData.tzzy" placeholder="请选择" clearable style="width: 150px">
+            <el-option
+              v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value" />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="安全管理证" prop="aqgl">
+          <el-select v-model="formData.aqgl" placeholder="请选择" clearable style="width: 150px">
+            <el-option
+              v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value" />
+          </el-select>
+        </el-form-item>
+      </div> -->
+
+      <div class="flex flex-wrap items-center justify-between">
+        <el-form-item label="硫化氢证" prop="lsh">
+          <el-radio-group v-model="formData.lsh">
+            <el-radio
+              v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
+              :key="dict.value"
+              :value="dict.value">
+              {{ dict.label }}
+            </el-radio>
+          </el-radio-group>
+        </el-form-item>
+
+        <el-form-item label="井控证" prop="jk">
+          <el-radio-group v-model="formData.jk">
+            <el-radio
+              v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
+              :key="dict.value"
+              :value="dict.value">
+              {{ dict.label }}
+            </el-radio>
+          </el-radio-group>
+        </el-form-item>
+
+        <el-form-item label="HSE证" prop="hse">
+          <el-radio-group v-model="formData.hse">
+            <el-radio
+              v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
+              :key="dict.value"
+              :value="dict.value">
+              {{ dict.label }}
+            </el-radio>
+          </el-radio-group>
+        </el-form-item>
+
+        <el-form-item label="司钻证" prop="sz">
+          <el-radio-group v-model="formData.sz">
+            <el-radio
+              v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
+              :key="dict.value"
+              :value="dict.value">
+              {{ dict.label }}
+            </el-radio>
+          </el-radio-group>
+        </el-form-item>
+
+        <el-form-item label="高处作业证" prop="gczy">
+          <el-radio-group v-model="formData.gczy">
+            <el-radio
+              v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
+              :key="dict.value"
+              :value="dict.value">
+              {{ dict.label }}
+            </el-radio>
+          </el-radio-group>
+        </el-form-item>
+
+        <el-form-item label="电工证" prop="dg">
+          <el-radio-group v-model="formData.dg">
+            <el-radio
+              v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
+              :key="dict.value"
+              :value="dict.value">
+              {{ dict.label }}
+            </el-radio>
+          </el-radio-group>
+        </el-form-item>
+
+        <el-form-item
+          label="连续油管主操证"
+          prop="lxygzc"
+          label-width="auto"
+          style="margin-left: -5px">
+          <el-radio-group v-model="formData.lxygzc">
+            <el-radio
+              v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
+              :key="dict.value"
+              :value="dict.value">
+              {{ dict.label }}
+            </el-radio>
+          </el-radio-group>
+        </el-form-item>
+
+        <el-form-item label="吊装证" prop="dz">
+          <el-radio-group v-model="formData.dz">
+            <el-radio
+              v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
+              :key="dict.value"
+              :value="dict.value">
+              {{ dict.label }}
+            </el-radio>
+          </el-radio-group>
+        </el-form-item>
+
+        <el-form-item label="特种作业证" prop="tzzy">
+          <el-radio-group v-model="formData.tzzy">
+            <el-radio
+              v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
+              :key="dict.value"
+              :value="dict.value">
+              {{ dict.label }}
+            </el-radio>
+          </el-radio-group>
+        </el-form-item>
+
+        <el-form-item label="安全管理证" prop="aqgl">
+          <el-radio-group v-model="formData.aqgl">
+            <el-radio
+              v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
+              :key="dict.value"
+              :value="dict.value">
+              {{ dict.label }}
+            </el-radio>
+          </el-radio-group>
+        </el-form-item>
+      </div>
     </el-form>
     <template #footer>
       <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
@@ -45,6 +269,7 @@ import { handleTree, defaultProps } from '@/utils/tree'
 import * as DeptApi from '@/api/system/dept'
 import { useUserStore } from '@/store/modules/user'
 import { ElMessageBox } from 'element-plus'
+import { DICT_TYPE, getBoolDictOptions } from '@/utils/dict'
 /** SOC卡汇总 表单 */
 defineOptions({ name: 'IotSocSummaryForm' })
 
@@ -65,13 +290,34 @@ const formData = ref({
 
   remark: undefined,
   deptId: undefined,
-  deptName: undefined
+  deptName: undefined,
+  lsh: undefined,
+  jk: undefined,
+  hse: undefined,
+  sz: undefined,
+  gczy: undefined,
+  dg: undefined,
+  lxygzc: undefined,
+  dz: undefined,
+  tzzy: undefined,
+  aqgl: undefined
 })
 const formRules = reactive({
   nickname: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
   deptId: [{ required: true, message: '请选择所属队伍', trigger: 'blur' }],
   mobile: [{ required: true, message: '请输入手机号', trigger: 'blur' }],
-  postName: [{ required: true, message: '请输入岗位名称', trigger: 'blur' }]
+  postName: [{ required: true, message: '请输入岗位名称', trigger: 'blur' }],
+
+  lsh: [{ required: true, message: '请选择', trigger: 'blur' }],
+  jk: [{ required: true, message: '请选择', trigger: 'blur' }],
+  hse: [{ required: true, message: '请选择', trigger: 'blur' }],
+  sz: [{ required: true, message: '请选择', trigger: 'blur' }],
+  gczy: [{ required: true, message: '请选择', trigger: 'blur' }],
+  dg: [{ required: true, message: '请选择', trigger: 'blur' }],
+  lxygzc: [{ required: true, message: '请选择', trigger: 'blur' }],
+  dz: [{ required: true, message: '请选择', trigger: 'blur' }],
+  tzzy: [{ required: true, message: '请选择', trigger: 'blur' }],
+  aqgl: [{ required: true, message: '请选择', trigger: 'blur' }]
 })
 const formRef = ref() // 表单 Ref
 

+ 109 - 0
src/views/pms/qhse/certPerson/index.vue

@@ -79,6 +79,115 @@
           <zm-table-column label="岗位" align="center" prop="postName" />
           <zm-table-column label="手机号" align="center" prop="mobile" />
           <zm-table-column label="部门名称" align="center" prop="deptName" />
+          <zm-table-column label="三小证" align="center">
+            <zm-table-column label="硫化氢" align="center">
+              <template #default="scope">
+                <el-button circle type="success" style="border: none" plain v-if="scope.row.lsh">
+                  <span class="text-[#259644]">
+                    {{ '✔' }}
+                  </span>
+                </el-button>
+                <span v-else></span>
+              </template>
+            </zm-table-column>
+            <zm-table-column label="井控(A2)" align="center">
+              <template #default="scope">
+                <el-button circle type="success" style="border: none" plain v-if="scope.row.jk">
+                  <span class="text-[#259644]">
+                    {{ '✔' }}
+                  </span>
+                </el-button>
+                <span v-else></span>
+              </template>
+            </zm-table-column>
+            <zm-table-column label="HSE" align="center">
+              <template #default="scope">
+                <el-button circle type="success" style="border: none" plain v-if="scope.row.hse">
+                  <span class="text-[#259644]">
+                    {{ '✔' }}
+                  </span>
+                </el-button>
+                <span v-else></span>
+              </template>
+            </zm-table-column>
+          </zm-table-column>
+
+          <zm-table-column label="司钻证" align="center">
+            <template #default="scope">
+              <el-button circle type="success" style="border: none" plain v-if="scope.row.sz">
+                <span class="text-[#259644]">
+                  {{ '✔' }}
+                </span>
+              </el-button>
+              <span v-else></span>
+            </template>
+          </zm-table-column>
+
+          <zm-table-column label="高处作业证" align="center">
+            <template #default="scope">
+              <el-button circle type="success" style="border: none" plain v-if="scope.row.gczy">
+                <span class="text-[#259644]">
+                  {{ '✔' }}
+                </span>
+              </el-button>
+              <span v-else></span>
+            </template>
+          </zm-table-column>
+
+          <zm-table-column label="电工证" align="center">
+            <template #default="scope">
+              <el-button circle type="success" style="border: none" plain v-if="scope.row.dg">
+                <span class="text-[#259644]">
+                  {{ '✔' }}
+                </span>
+              </el-button>
+              <span v-else></span>
+            </template>
+          </zm-table-column>
+
+          <zm-table-column label="连续油管主操证" align="center" min-width="120px">
+            <template #default="scope">
+              <el-button circle type="success" style="border: none" plain v-if="scope.row.lxygzc">
+                <span class="text-[#259644]">
+                  {{ '✔' }}
+                </span>
+              </el-button>
+              <span v-else></span>
+            </template>
+          </zm-table-column>
+
+          <zm-table-column label="吊装证" align="center">
+            <template #default="scope">
+              <el-button circle type="success" style="border: none" plain v-if="scope.row.dz">
+                <span class="text-[#259644]">
+                  {{ '✔' }}
+                </span>
+              </el-button>
+              <span v-else></span>
+            </template>
+          </zm-table-column>
+
+          <zm-table-column label="特种作业证" align="center">
+            <template #default="scope">
+              <el-button circle type="success" style="border: none" plain v-if="scope.row.tzzy">
+                <span class="text-[#259644]">
+                  {{ '✔' }}
+                </span>
+              </el-button>
+              <span v-else></span>
+            </template>
+          </zm-table-column>
+
+          <zm-table-column label="安全管理证" align="center">
+            <template #default="scope">
+              <el-button circle type="success" style="border: none" plain v-if="scope.row.aqgl">
+                <span class="text-[#259644]">
+                  {{ '✔' }}
+                </span>
+              </el-button>
+              <span v-else></span>
+            </template>
+          </zm-table-column>
 
           <zm-table-column label="备注" align="center" prop="remark" show-overflow-tooltip />
 

+ 16 - 1
src/views/pms/qhse/certificate.vue

@@ -49,6 +49,20 @@
             </el-select>
           </el-form-item>
 
+          <el-form-item label="是否预警" prop="alertWarn">
+            <el-select
+              v-model="queryParams.alertWarn"
+              placeholder="请选择是否预警"
+              clearable
+              style="width: 150px">
+              <el-option
+                v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value" />
+            </el-select>
+          </el-form-item>
+
           <el-form-item>
             <el-button @click="handleAdd" type="primary"
               ><Icon icon="ep:plus" class="mr-5px" />新增</el-button
@@ -429,7 +443,8 @@ const queryParams = reactive({
   type: undefined,
   classify: undefined,
   deptId: '',
-  expired: undefined
+  expired: undefined,
+  alertWarn: undefined
 })
 const queryFormRef = ref(null) // 搜索的表单
 

+ 18 - 3
src/views/pms/qhse/index.vue

@@ -14,14 +14,28 @@
               placeholder="请输入计量器具名称"
               clearable
               @keyup.enter="handleQuery"
-              class="!w-180px" />
+              class="!w-150px" />
           </el-form-item>
           <el-form-item label="是否过期" prop="expired">
             <el-select
               v-model="queryParams.expired"
               placeholder="请选择是否过期"
               clearable
-              style="width: 180px">
+              style="width: 150px">
+              <el-option
+                v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value" />
+            </el-select>
+          </el-form-item>
+
+          <el-form-item label="是否预警" prop="alertWarn">
+            <el-select
+              v-model="queryParams.alertWarn"
+              placeholder="请选择是否预警"
+              clearable
+              style="width: 150px">
               <el-option
                 v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
                 :key="dict.value"
@@ -453,7 +467,8 @@ const queryParams = reactive({
   pageSize: 10,
   measureName: undefined,
   deptId: undefined,
-  expired: undefined
+  expired: undefined,
+  alertWarn: undefined
 })
 const queryFormRef = ref(null) // 搜索的表单