|
@@ -419,15 +419,18 @@
|
|
|
<el-row :gutter="16">
|
|
<el-row :gutter="16">
|
|
|
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
|
|
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
|
|
|
<el-form-item label="工单填报人" prop="dutyPerson">
|
|
<el-form-item label="工单填报人" prop="dutyPerson">
|
|
|
- <el-input
|
|
|
|
|
|
|
+ <el-select
|
|
|
v-model="reportInfo.dutyPerson"
|
|
v-model="reportInfo.dutyPerson"
|
|
|
|
|
+ filterable
|
|
|
|
|
+ clearable
|
|
|
placeholder="请选择填报人"
|
|
placeholder="请选择填报人"
|
|
|
- readonly
|
|
|
|
|
- @click="openUserSelect">
|
|
|
|
|
- <template #suffix>
|
|
|
|
|
- <Icon icon="ep:search" class="cursor-pointer" />
|
|
|
|
|
- </template>
|
|
|
|
|
- </el-input>
|
|
|
|
|
|
|
+ style="width: 100%">
|
|
|
|
|
+ <el-option
|
|
|
|
|
+ v-for="item in userList"
|
|
|
|
|
+ :key="item.id"
|
|
|
|
|
+ :label="item.nickname"
|
|
|
|
|
+ :value="item.id" />
|
|
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
</el-row>
|
|
</el-row>
|
|
@@ -450,9 +453,6 @@
|
|
|
<el-button type="primary" @click="handleSubmit" :loading="submitLoading"> 提交 </el-button>
|
|
<el-button type="primary" @click="handleSubmit" :loading="submitLoading"> 提交 </el-button>
|
|
|
</div>
|
|
</div>
|
|
|
</el-form>
|
|
</el-form>
|
|
|
-
|
|
|
|
|
- <!-- 用户选择弹窗 -->
|
|
|
|
|
- <UserSelectForm ref="userSelectFormRef" @confirm="handleUserConfirm" />
|
|
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
@@ -461,11 +461,10 @@ import { reactive, ref } from 'vue'
|
|
|
import { useRouter, useRoute } from 'vue-router'
|
|
import { useRouter, useRoute } from 'vue-router'
|
|
|
import { FormInstance, FormRules } from 'element-plus'
|
|
import { FormInstance, FormRules } from 'element-plus'
|
|
|
import { QhseMonthReportApi } from '@/api/pms/qhse'
|
|
import { QhseMonthReportApi } from '@/api/pms/qhse'
|
|
|
-// import DeptSelectForm from '@/components/DeptSelectForm/qhseDept.vue'
|
|
|
|
|
-import UserSelectForm from '@/components/UserSelectForm/index.vue'
|
|
|
|
|
import { handleTree, defaultProps } from '@/utils/tree'
|
|
import { handleTree, defaultProps } from '@/utils/tree'
|
|
|
import * as DeptApi from '@/api/system/dept'
|
|
import * as DeptApi from '@/api/system/dept'
|
|
|
-const deptList2 = ref<Tree[]>([]) // 树形结构
|
|
|
|
|
|
|
+import * as UserApi from '@/api/system/user'
|
|
|
|
|
+import { getUserProfile } from '@/api/system/user/profile'
|
|
|
import { useTagsViewStore } from '@/store/modules/tagsView'
|
|
import { useTagsViewStore } from '@/store/modules/tagsView'
|
|
|
const { delView } = useTagsViewStore()
|
|
const { delView } = useTagsViewStore()
|
|
|
|
|
|
|
@@ -474,6 +473,8 @@ defineOptions({ name: 'MonthlyReportAdd' })
|
|
|
const router = useRouter()
|
|
const router = useRouter()
|
|
|
const route = useRoute()
|
|
const route = useRoute()
|
|
|
const message = useMessage()
|
|
const message = useMessage()
|
|
|
|
|
+const deptList2 = ref<Tree[]>([]) // 树形结构
|
|
|
|
|
+const userList = ref<any[]>([])
|
|
|
|
|
|
|
|
// 表单引用
|
|
// 表单引用
|
|
|
const formRef = ref<FormInstance>()
|
|
const formRef = ref<FormInstance>()
|
|
@@ -523,36 +524,43 @@ const formRules = reactive<FormRules>({
|
|
|
title: [{ required: true, message: '月报标题不能为空', trigger: 'blur' }],
|
|
title: [{ required: true, message: '月报标题不能为空', trigger: 'blur' }],
|
|
|
yearMonth: [{ required: true, message: '年月不能为空', trigger: 'change' }],
|
|
yearMonth: [{ required: true, message: '年月不能为空', trigger: 'change' }],
|
|
|
deptId: [{ required: true, message: '部门不能为空', trigger: 'change' }],
|
|
deptId: [{ required: true, message: '部门不能为空', trigger: 'change' }],
|
|
|
- dutyPerson: [{ required: true, message: '工单填报人不能为空', trigger: 'change' }]
|
|
|
|
|
|
|
+ dutyPerson: [{ required: true, message: '工单填报人不能为空', trigger: 'change' }],
|
|
|
|
|
+ employee: [{ required: true, message: '员工数不能为空', trigger: 'blur' }],
|
|
|
|
|
+ subcontractors: [{ required: true, message: '分包商人数不能为空', trigger: 'blur' }],
|
|
|
|
|
+ drivingMileage: [{ required: true, message: '行驶里程不能为空', trigger: 'blur' }],
|
|
|
|
|
+ totalManHours: [{ required: true, message: '总工时不能为空', trigger: 'blur' }],
|
|
|
|
|
+ withoutAccident: [{ required: true, message: '无事故累计天数不能为空', trigger: 'blur' }],
|
|
|
|
|
+ fatality: [{ required: true, message: '死亡不能为空', trigger: 'blur' }],
|
|
|
|
|
+ injury: [{ required: true, message: '损失工时事故不能为空', trigger: 'blur' }],
|
|
|
|
|
+ restrictedCase: [{ required: true, message: '受限事件不能为空', trigger: 'blur' }],
|
|
|
|
|
+ medicalCase: [{ required: true, message: '医疗事件不能为空', trigger: 'blur' }],
|
|
|
|
|
+ firstAidCase: [{ required: true, message: '急救事件不能为空', trigger: 'blur' }],
|
|
|
|
|
+ vehicleAccident: [{ required: true, message: '车辆事故不能为空', trigger: 'blur' }],
|
|
|
|
|
+ nearMiss: [{ required: true, message: '未遂事件次数不能为空', trigger: 'blur' }],
|
|
|
|
|
+ spill: [{ required: true, message: '泄漏事件次数不能为空', trigger: 'blur' }],
|
|
|
|
|
+ lifeSavingRules: [{ required: true, message: '违反保命规则的次数不能为空', trigger: 'blur' }],
|
|
|
|
|
+ toolboxTalk: [{ required: true, message: '班前会次不能为空', trigger: 'blur' }],
|
|
|
|
|
+ committeeMeeting: [{ required: true, message: '委员会会议不能为空', trigger: 'blur' }],
|
|
|
|
|
+ monthlyMeeting: [{ required: true, message: '月度会议不能为空', trigger: 'blur' }],
|
|
|
|
|
+ companyHazard: [{ required: true, message: '隐患排查次数不能为空', trigger: 'blur' }],
|
|
|
|
|
+ qhseInspection: [{ required: true, message: '请填写QHSE检查次数', trigger: 'blur' }],
|
|
|
|
|
+ socCards: [{ required: true, message: 'SOC 卡片不能为空', trigger: 'blur' }],
|
|
|
|
|
+ ptwAudit: [{ required: true, message: 'PTW 审核不能为空', trigger: 'blur' }],
|
|
|
|
|
+ jsa: [{ required: true, message: 'JSA 不能为空', trigger: 'blur' }],
|
|
|
|
|
+ drills: [{ required: true, message: '演练次数不能为空', trigger: 'blur' }],
|
|
|
|
|
+ training: [{ required: true, message: '培训次数不能为空', trigger: 'blur' }],
|
|
|
|
|
+ participantsTraining: [{ required: true, message: 'QHSE培训人次不能为空', trigger: 'blur' }],
|
|
|
|
|
+ waterConsumption: [{ required: true, message: '水耗不能为空', trigger: 'blur' }],
|
|
|
|
|
+ dieselConsumption: [{ required: true, message: '柴油耗能不能为空', trigger: 'blur' }],
|
|
|
|
|
+ electricityConsumption: [{ required: true, message: '电耗不能为空', trigger: 'blur' }],
|
|
|
|
|
+ naturalGasConsumption: [{ required: true, message: '天然气耗不能为空', trigger: 'blur' }],
|
|
|
|
|
+ trainingsHours: [{ required: true, message: '培训课时不能为空', trigger: 'blur' }],
|
|
|
|
|
+ yearMonths: [{ required: true, message: '年月不能为空', trigger: 'change' }]
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
// 部门名称显示
|
|
// 部门名称显示
|
|
|
const deptName = ref('')
|
|
const deptName = ref('')
|
|
|
|
|
|
|
|
-// 填报人名称显示
|
|
|
|
|
-const dutyPersonName = ref('')
|
|
|
|
|
-
|
|
|
|
|
-// 用户选择弹窗引用
|
|
|
|
|
-const userSelectFormRef = ref()
|
|
|
|
|
-
|
|
|
|
|
-/** 打开用户选择 */
|
|
|
|
|
-const openUserSelect = () => {
|
|
|
|
|
- userSelectFormRef.value?.open()
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-const getUserDisplayName = (user: any) => {
|
|
|
|
|
- return user?.nickname || user?.label || user?.name || user?.username || String(user?.id || '')
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-/** 用户选择确认 */
|
|
|
|
|
-const handleUserConfirm = (userId: any, userList: any[]) => {
|
|
|
|
|
- if (userList && userList.length > 0) {
|
|
|
|
|
- const user = userList[0]
|
|
|
|
|
- reportInfo.dutyPerson = user.id
|
|
|
|
|
- dutyPersonName.value = getUserDisplayName(user)
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
/** 提交表单 */
|
|
/** 提交表单 */
|
|
|
const handleSubmit = async () => {
|
|
const handleSubmit = async () => {
|
|
|
if (!formRef.value) return
|
|
if (!formRef.value) return
|
|
@@ -563,7 +571,7 @@ const handleSubmit = async () => {
|
|
|
|
|
|
|
|
submitLoading.value = true
|
|
submitLoading.value = true
|
|
|
try {
|
|
try {
|
|
|
- await QhseMonthReportApi.createQhseMonthReport(reportInfo)
|
|
|
|
|
|
|
+ await QhseMonthReportApi.updateQhseMonthReport(reportInfo)
|
|
|
message.success('新增成功')
|
|
message.success('新增成功')
|
|
|
// 返回列表页或上一页
|
|
// 返回列表页或上一页
|
|
|
router.back()
|
|
router.back()
|
|
@@ -580,14 +588,18 @@ const handleCancel = () => {
|
|
|
router.push({ name: 'QhseMonthlyReport', params: {} })
|
|
router.push({ name: 'QhseMonthlyReport', params: {} })
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+const userInfo = ref<any>({})
|
|
|
onMounted(async () => {
|
|
onMounted(async () => {
|
|
|
|
|
+ const users = await getUserProfile()
|
|
|
|
|
+ userInfo.value = users
|
|
|
deptList2.value = handleTree(await DeptApi.getSimpleDeptList())
|
|
deptList2.value = handleTree(await DeptApi.getSimpleDeptList())
|
|
|
|
|
+ userList.value = await UserApi.selectedDeptsEmployee({
|
|
|
|
|
+ deptIds: userInfo.value.dept.id
|
|
|
|
|
+ })
|
|
|
const res = await QhseMonthReportApi.getQhseMonthReport(route.params.id)
|
|
const res = await QhseMonthReportApi.getQhseMonthReport(route.params.id)
|
|
|
const data = (res as any)?.data ?? res ?? {}
|
|
const data = (res as any)?.data ?? res ?? {}
|
|
|
|
|
|
|
|
Object.assign(reportInfo, data)
|
|
Object.assign(reportInfo, data)
|
|
|
- dutyPersonName.value =
|
|
|
|
|
- data.personName || data.dutyPersonName || getUserDisplayName(data.dutyPersonInfo || data)
|
|
|
|
|
})
|
|
})
|
|
|
</script>
|
|
</script>
|
|
|
<style scoped lang="scss">
|
|
<style scoped lang="scss">
|