|
|
@@ -15,16 +15,21 @@
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item>
|
|
|
- <el-button @click="handleAdd" type="primary"
|
|
|
+ <el-button @click="handleAdd" type="primary" v-hasPermi="['rq:qhse-ptw:create']"
|
|
|
><Icon icon="ep:plus" class="mr-5px" />新增</el-button
|
|
|
>
|
|
|
- <el-button @click="handleQuery"
|
|
|
+ <el-button @click="handleQuery" v-hasPermi="['rq:qhse-ptw:query']"
|
|
|
><Icon icon="ep:search" class="mr-5px" /> {{ t('devicePerson.search') }}</el-button
|
|
|
>
|
|
|
<el-button @click="resetQuery"
|
|
|
><Icon icon="ep:refresh" class="mr-5px" /> {{ t('devicePerson.reset') }}</el-button
|
|
|
>
|
|
|
- <el-button @click="handleExport" type="success" plain :loading="exportLoading"
|
|
|
+ <el-button
|
|
|
+ @click="handleExport"
|
|
|
+ type="success"
|
|
|
+ plain
|
|
|
+ :loading="exportLoading"
|
|
|
+ v-hasPermi="['rq:qhse-ptw:export']"
|
|
|
><Icon icon="ep:download" class="mr-5px" /> 导出</el-button
|
|
|
>
|
|
|
</el-form-item>
|
|
|
@@ -38,8 +43,7 @@
|
|
|
:data="list"
|
|
|
:stripe="true"
|
|
|
height="calc(85vh - 130px)"
|
|
|
- :show-overflow-tooltip="true"
|
|
|
- >
|
|
|
+ :show-overflow-tooltip="true">
|
|
|
<zm-table-column :label="t('monitor.serial')" width="70" align="center" fixed="left">
|
|
|
<template #default="scope">
|
|
|
{{ scope.$index + 1 }}
|
|
|
@@ -71,29 +75,25 @@
|
|
|
label="作业地点"
|
|
|
align="center"
|
|
|
prop="workLocation"
|
|
|
- show-overflow-tooltip
|
|
|
- />
|
|
|
+ show-overflow-tooltip />
|
|
|
<zm-table-column
|
|
|
label="作业内容"
|
|
|
align="center"
|
|
|
prop="workContent"
|
|
|
- show-overflow-tooltip
|
|
|
- />
|
|
|
+ show-overflow-tooltip />
|
|
|
|
|
|
<zm-table-column
|
|
|
label="作业人员"
|
|
|
align="center"
|
|
|
prop="workPerson"
|
|
|
- show-overflow-tooltip
|
|
|
- />
|
|
|
+ show-overflow-tooltip />
|
|
|
|
|
|
<zm-table-column label="监护人" align="center" prop="guardian" show-overflow-tooltip />
|
|
|
<zm-table-column
|
|
|
label="作业负责人"
|
|
|
align="center"
|
|
|
prop="workDuty"
|
|
|
- show-overflow-tooltip
|
|
|
- />
|
|
|
+ show-overflow-tooltip />
|
|
|
<zm-table-column label="部门" align="center" prop="deptName" show-overflow-tooltip />
|
|
|
|
|
|
<zm-table-column label="附件" align="center" min-width="90">
|
|
|
@@ -120,19 +120,29 @@
|
|
|
label="备注"
|
|
|
align="center"
|
|
|
prop="remark"
|
|
|
- :show-overflow-tooltip="true"
|
|
|
- />
|
|
|
+ :show-overflow-tooltip="true" />
|
|
|
|
|
|
<zm-table-column
|
|
|
:label="t('devicePerson.operation')"
|
|
|
align="center"
|
|
|
fixed="right"
|
|
|
min-width="120px"
|
|
|
- action
|
|
|
- >
|
|
|
+ action>
|
|
|
<template #default="scope">
|
|
|
- <el-button link type="primary" @click="handleEdit(scope.row)"> 编辑 </el-button>
|
|
|
- <el-button link type="danger" @click="handleDelete(scope.row.id)"> 删除 </el-button>
|
|
|
+ <el-button
|
|
|
+ v-hasPermi="['rq:qhse-ptw:update']"
|
|
|
+ link
|
|
|
+ type="primary"
|
|
|
+ @click="handleEdit(scope.row)">
|
|
|
+ 编辑
|
|
|
+ </el-button>
|
|
|
+ <el-button
|
|
|
+ v-hasPermi="['rq:qhse-ptw:delete']"
|
|
|
+ link
|
|
|
+ type="danger"
|
|
|
+ @click="handleDelete(scope.row.id)">
|
|
|
+ 删除
|
|
|
+ </el-button>
|
|
|
</template>
|
|
|
</zm-table-column>
|
|
|
</zm-table>
|
|
|
@@ -142,8 +152,7 @@
|
|
|
:total="total"
|
|
|
v-model:page="queryParams.pageNo"
|
|
|
v-model:limit="queryParams.pageSize"
|
|
|
- @pagination="getList"
|
|
|
- />
|
|
|
+ @pagination="getList" />
|
|
|
</ContentWrap>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
@@ -154,15 +163,24 @@
|
|
|
v-model="dialogVisible"
|
|
|
width="600px"
|
|
|
destroy-on-close
|
|
|
- @close="closeDialog"
|
|
|
- >
|
|
|
+ @close="closeDialog">
|
|
|
<el-form
|
|
|
ref="formRef"
|
|
|
:model="formData"
|
|
|
:rules="formRules"
|
|
|
label-width="120px"
|
|
|
- v-loading="formLoading"
|
|
|
- >
|
|
|
+ v-loading="formLoading">
|
|
|
+ <el-form-item label="所属队伍" prop="deptId">
|
|
|
+ <el-tree-select
|
|
|
+ clearable
|
|
|
+ v-model="formData.deptId"
|
|
|
+ :data="deptList2"
|
|
|
+ :props="defaultProps"
|
|
|
+ check-strictly
|
|
|
+ node-key="id"
|
|
|
+ filterable
|
|
|
+ placeholder="请选择所在部门" />
|
|
|
+ </el-form-item>
|
|
|
<el-form-item label="JSA编号" prop="ptwNo">
|
|
|
<el-input v-model="formData.ptwNo" disabled placeholder="选择JSA编号" style="width: 300px">
|
|
|
<template #append>
|
|
|
@@ -179,8 +197,7 @@
|
|
|
type="textarea"
|
|
|
:rows="2"
|
|
|
v-model="formData.workContent"
|
|
|
- placeholder="请输入作业内容"
|
|
|
- />
|
|
|
+ placeholder="请输入作业内容" />
|
|
|
</el-form-item>
|
|
|
|
|
|
<!-- 作业票类型 -->
|
|
|
@@ -190,27 +207,28 @@
|
|
|
v-for="item in getDictOptions(DICT_TYPE.QHSE_PTW_TYPE)"
|
|
|
:key="item.value"
|
|
|
:label="item.label"
|
|
|
- :value="item.value"
|
|
|
- />
|
|
|
+ :value="item.value" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item
|
|
|
label="作业分级"
|
|
|
prop="ptwGrade"
|
|
|
- v-if="formData.ptwType === '1' || formData.ptwType === '4' || formData.ptwType === '3'"
|
|
|
- >
|
|
|
+ v-if="
|
|
|
+ formData.ptwType === 'donghuo' ||
|
|
|
+ formData.ptwType === 'gaochu' ||
|
|
|
+ formData.ptwType === 'diaozhuang'
|
|
|
+ ">
|
|
|
<el-select v-model="formData.ptwGrade" placeholder="请选择作业分级">
|
|
|
<el-option
|
|
|
v-for="item in getDictOptions(DICT_TYPE.QHSE_PTW_GRADE)"
|
|
|
:key="item.value"
|
|
|
:label="item.label"
|
|
|
- :value="item.value"
|
|
|
- />
|
|
|
+ :value="item.value" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
|
|
|
- <el-form-item label="作业地点" prop="ptwXh">
|
|
|
+ <el-form-item label="作业地点" prop="workLocation">
|
|
|
<el-input v-model="formData.workLocation" placeholder="请输入作业地点" />
|
|
|
</el-form-item>
|
|
|
|
|
|
@@ -220,8 +238,7 @@
|
|
|
type="date"
|
|
|
value-format="x"
|
|
|
placeholder="请选择作业时间"
|
|
|
- style="width: 100%"
|
|
|
- />
|
|
|
+ style="width: 100%" />
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="作业人员" prop="workPerson">
|
|
|
@@ -229,8 +246,7 @@
|
|
|
v-model="formData.workPerson"
|
|
|
disabled
|
|
|
placeholder="请选择作业人员"
|
|
|
- style="width: 300px"
|
|
|
- >
|
|
|
+ style="width: 300px">
|
|
|
<template #append>
|
|
|
<el-link @click="selectworkPerson('workPerson')" :underline="false">选择</el-link>
|
|
|
</template>
|
|
|
@@ -242,8 +258,7 @@
|
|
|
v-model="formData.guardian"
|
|
|
disabled
|
|
|
placeholder="请选择监护人"
|
|
|
- style="width: 300px"
|
|
|
- >
|
|
|
+ style="width: 300px">
|
|
|
<template #append>
|
|
|
<el-link @click="selectworkPerson('guardian')" :underline="false">选择</el-link>
|
|
|
</template>
|
|
|
@@ -255,8 +270,7 @@
|
|
|
v-model="formData.workDuty"
|
|
|
disabled
|
|
|
placeholder="请选择作业负责人"
|
|
|
- style="width: 300px"
|
|
|
- >
|
|
|
+ style="width: 300px">
|
|
|
<template #append>
|
|
|
<el-link @click="selectworkPerson('workDuty')" :underline="false">选择</el-link>
|
|
|
</template>
|
|
|
@@ -269,8 +283,7 @@
|
|
|
:file-type="['doc', 'docx', 'xls', 'xlsx', 'pdf', 'jpg', 'png', 'jpeg']"
|
|
|
:limit="3"
|
|
|
:file-size="100"
|
|
|
- class="min-w-80px"
|
|
|
- />
|
|
|
+ class="min-w-80px" />
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="备注" prop="remark">
|
|
|
@@ -279,8 +292,7 @@
|
|
|
v-model="formData.remark"
|
|
|
:rows="2"
|
|
|
placeholder="请输入备注"
|
|
|
- style="width: 100%"
|
|
|
- />
|
|
|
+ style="width: 100%" />
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
|
|
|
@@ -295,8 +307,7 @@
|
|
|
<div
|
|
|
v-for="(file, index) in fileList"
|
|
|
:key="index"
|
|
|
- class="flex items-center justify-between mt-5"
|
|
|
- >
|
|
|
+ class="flex items-center justify-between mt-5">
|
|
|
<span class="file-name-text">{{ extractFileName(file) }}</span>
|
|
|
<div>
|
|
|
<el-button link type="primary" @click="viewFileInfo(file)">
|
|
|
@@ -326,8 +337,7 @@
|
|
|
placeholder="请输入所属人员"
|
|
|
clearable
|
|
|
@keyup.enter="handleQuery2"
|
|
|
- class="!w-200px"
|
|
|
- />
|
|
|
+ class="!w-200px" />
|
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
|
<el-button @click="handleQuery2"
|
|
|
@@ -345,15 +355,13 @@
|
|
|
:data="certList"
|
|
|
:stripe="true"
|
|
|
:show-overflow-tooltip="true"
|
|
|
- ref="measureTableRef"
|
|
|
- >
|
|
|
+ ref="measureTableRef">
|
|
|
<el-table-column width="50" align="center">
|
|
|
<template #default="scope">
|
|
|
<el-radio
|
|
|
:model-value="selectedPerson"
|
|
|
:label="scope.row.userName"
|
|
|
- @change="handleRadioChange(scope.row)"
|
|
|
- >
|
|
|
+ @change="handleRadioChange(scope.row)">
|
|
|
|
|
|
</el-radio>
|
|
|
</template>
|
|
|
@@ -374,8 +382,7 @@
|
|
|
<dict-tag
|
|
|
v-if="scope.row.type === 'organization'"
|
|
|
:type="DICT_TYPE.ORG_CERT"
|
|
|
- :value="scope.row.classify"
|
|
|
- />
|
|
|
+ :value="scope.row.classify" />
|
|
|
<dict-tag v-else :type="DICT_TYPE.PERSON_CERT" :value="scope.row.classify" />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
@@ -384,8 +391,7 @@
|
|
|
width="150"
|
|
|
align="center"
|
|
|
prop="certName"
|
|
|
- show-overflow-tooltip
|
|
|
- />
|
|
|
+ show-overflow-tooltip />
|
|
|
|
|
|
<el-table-column label="所属人" align="center" prop="userName" />
|
|
|
<el-table-column label="所在部门" align="center" prop="deptName" />
|
|
|
@@ -417,8 +423,7 @@
|
|
|
:total="total2"
|
|
|
v-model:page="queryParams2.pageNo"
|
|
|
v-model:limit="queryParams2.pageSize"
|
|
|
- @pagination="getCertList"
|
|
|
- />
|
|
|
+ @pagination="getCertList" />
|
|
|
</div>
|
|
|
|
|
|
<template #footer>
|
|
|
@@ -440,8 +445,7 @@
|
|
|
placeholder="请输入JSA序号"
|
|
|
clearable
|
|
|
@keyup.enter="handleQuery3"
|
|
|
- class="!w-200px"
|
|
|
- />
|
|
|
+ class="!w-200px" />
|
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
|
<el-button @click="handleQuery3"
|
|
|
@@ -460,8 +464,7 @@
|
|
|
<el-radio
|
|
|
:model-value="selectedJSA"
|
|
|
:label="scope.row.jsaNo"
|
|
|
- @change="handleRadioChange2(scope.row)"
|
|
|
- >
|
|
|
+ @change="handleRadioChange2(scope.row)">
|
|
|
|
|
|
</el-radio>
|
|
|
</template>
|
|
|
@@ -501,8 +504,7 @@
|
|
|
:total="total3"
|
|
|
v-model:page="queryParams3.pageNo"
|
|
|
v-model:limit="queryParams3.pageSize"
|
|
|
- @pagination="getJSAList"
|
|
|
- />
|
|
|
+ @pagination="getJSAList" />
|
|
|
</div>
|
|
|
|
|
|
<template #footer>
|
|
|
@@ -514,14 +516,13 @@
|
|
|
<FilePreviewDialog
|
|
|
v-model="filePreviewVisible"
|
|
|
:title="filePreviewTitle"
|
|
|
- :urls="filePreviewUrls"
|
|
|
- />
|
|
|
+ :urls="filePreviewUrls" />
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
import { QHSEPtwApi, IotMeasureCertApi, QHSEJsaApi } from '@/api/pms/qhse/index'
|
|
|
import DeptTree from '@/views/system/user/DeptTree2.vue'
|
|
|
-import { handleTree } from '@/utils/tree'
|
|
|
+import { handleTree, defaultProps } from '@/utils/tree'
|
|
|
import * as DeptApi from '@/api/system/dept'
|
|
|
import { ElMessageBox, ElMessage } from 'element-plus'
|
|
|
const deptList2 = ref<Tree[]>([]) // 树形结构
|
|
|
@@ -601,7 +602,8 @@ const formRules = {
|
|
|
guardian: [{ required: true, message: '监护人不能为空', trigger: 'blur' }],
|
|
|
workLocation: [{ required: true, message: '作业地点不能为空', trigger: 'blur' }],
|
|
|
workContent: [{ required: true, message: '作业内容不能为空', trigger: 'blur' }],
|
|
|
- ptwXh: [{ required: true, message: '作业票编号不能为空', trigger: 'blur' }],
|
|
|
+ ptwXh: [{ required: true, message: '序号不能为空', trigger: 'blur' }],
|
|
|
+ ptwNo: [{ required: true, message: '作业票编号不能为空', trigger: 'blur' }],
|
|
|
ptwGrade: [{ required: true, message: '作业票等级不能为空', trigger: 'blur' }],
|
|
|
ptwType: [{ required: true, message: '作业票类型不能为空', trigger: 'blur' }],
|
|
|
file: [{ required: true, message: '附件不能为空', trigger: 'blur' }],
|
|
|
@@ -690,6 +692,7 @@ const handleAdd = () => {
|
|
|
isEdit.value = false
|
|
|
dialogTitle.value = '新增'
|
|
|
resetForm()
|
|
|
+ formData.value.deptId = userStore.getUser.deptId
|
|
|
dialogVisible.value = true
|
|
|
}
|
|
|
|