基本功能都已完成
This commit is contained in:
@@ -2,9 +2,9 @@
|
||||
<view class="content">
|
||||
<view class="flex padding-top-xl padding-bottom-xl text-white " style="background-color:#007aff ;">
|
||||
<view class="cu-avatar xl round margin-left">
|
||||
<image></image>
|
||||
<image class="avatar-image" :src="getImageUrl(userInfo.avatar) || defaultAvatar" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="padding-left">
|
||||
<view class="padding-left" style="display: flex;flex-direction: column;gap: 10rpx;justify-content: center;align-items: center;">
|
||||
<view class="text-bold">{{ userInfo.deptName || '未知部门' }}</view>
|
||||
<view class="flex padding-top-xs">
|
||||
<view>用户:</view>
|
||||
@@ -82,7 +82,8 @@
|
||||
</view>
|
||||
<view class="margin-top margin-bottom flex justify-end">
|
||||
<button class="cu-btn round lg light bg-blue margin-right" @click.stop="ViewDetails(item)">查看详情</button>
|
||||
<button class="cu-btn round lg bg-blue" @click.stop="goDetails(item)">开始检查</button>
|
||||
<button v-if="item.finishedCount < item.totalCount" class="cu-btn round lg bg-blue" @click.stop="goDetails(item)">开始检查</button>
|
||||
<view v-else class="cu-btn round lg bg-green">已完成</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -92,10 +93,13 @@
|
||||
<view class="border-tite"></view>
|
||||
<view class="text-bold margin-left-xs">我的隐患排查</view>
|
||||
</view>
|
||||
<view class="list-list padding margin-bottom" v-for="(item,index) in hiddenDangerData" :key="item.id" @click="HazardList()">
|
||||
<view class="flex text-bold">
|
||||
<view>隐患</view>
|
||||
<view class="text-bold margin-left">#15</view>
|
||||
<view class="list-list padding margin-bottom" v-for="(item,index) in hiddenDangerData" :key="item.hazardId">
|
||||
<view class="flex text-bold justify-between">
|
||||
<view class="flex">
|
||||
<view>隐患</view>
|
||||
<view class="text-bold margin-left">#{{ index + 1 }}</view>
|
||||
</view>
|
||||
<view class="text-blue">{{item.statusName}}</view>
|
||||
</view>
|
||||
<view class="flex margin-top">
|
||||
<view class="text-gray">标题:</view>
|
||||
@@ -111,20 +115,32 @@
|
||||
</view>
|
||||
<view class="flex margin-top">
|
||||
<view class="text-gray">隐患等级:</view>
|
||||
<view>{{item.levelName}}</view>
|
||||
</view>
|
||||
<view class="flex margin-top">
|
||||
<view class="text-gray">隐患状态:</view>
|
||||
<view>{{item.statusName}}</view>
|
||||
<view class="level-tag" :class="{
|
||||
'level-minor': item.levelName === '轻微隐患',
|
||||
'level-normal': item.levelName === '一般隐患',
|
||||
'level-major': item.levelName === '重大隐患'
|
||||
}">{{item.levelName}}</view>
|
||||
</view>
|
||||
<view class="flex margin-top">
|
||||
<view class="text-gray">发现时间:</view>
|
||||
<view>{{item.createdAt}}</view>
|
||||
</view>
|
||||
<view class="margin-top margin-bottom flex" style="gap: 5rpx;">
|
||||
<button class="cu-btn round lg light bg-blue " style="white-space: nowrap;">查看详情</button>
|
||||
<button class="cu-btn round lg light bg-blue " style="white-space: nowrap;">立即整改</button>
|
||||
<button class="cu-btn round lg bg-blue " style="white-space: nowrap;">立即验收</button>
|
||||
<view class="margin-top margin-bottom flex justify-end" style="gap: 10rpx;">
|
||||
<!-- 所有状态都显示查看详情 -->
|
||||
<button class="cu-btn round lg light bg-blue" @click.stop="viewHazardDetail(item)">查看详情</button>
|
||||
<!-- 待整改状态:canEdit为true时显示隐患交办和立即整改 -->
|
||||
<button v-if="item.statusName === '待整改' && item.canEdit"
|
||||
class="cu-btn round lg light bg-blue" @click.stop="assignHazard(item)">隐患交办</button>
|
||||
<button v-if="item.statusName === '待整改' && item.canEdit"
|
||||
class="cu-btn round lg bg-blue" @click.stop="goRectification(item)">立即整改</button>
|
||||
<!-- 待验收显示编辑整改信息和立即验收 -->
|
||||
<button v-if="item.statusName === '待验收' && item.canEdit"
|
||||
class="cu-btn round lg light bg-blue" @click.stop="editRectification(item)">编辑整改信息</button>
|
||||
<button v-if="item.statusName === '待验收' && canAcceptance"
|
||||
class="cu-btn round lg bg-blue" @click.stop="goAcceptance(item)">立即验收</button>
|
||||
<!-- 待交办显示隐患交办 -->
|
||||
<button v-if="item.statusName === '待交办'"
|
||||
class="cu-btn round lg bg-blue" @click.stop="assignHazard(item)">隐患交办</button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -133,35 +149,73 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive } from 'vue';
|
||||
import { onLoad } from '@dcloudio/uni-app';
|
||||
import { ref, reactive, computed } from 'vue';
|
||||
// import { onLoad } from '@dcloudio/uni-app';
|
||||
import {getCheckPlanList,getHiddenDangerList} from '@/request/api.js'
|
||||
|
||||
import { getProfileDetail } from '@/request/three_one_api/info.js';
|
||||
import { onLoad, onShow } from '@dcloudio/uni-app';
|
||||
import { baseUrl } from '@/request/request.js';
|
||||
const loading = ref(true);
|
||||
|
||||
const defaultAvatar = 'https://ossweb-img.qq.com/images/lol/web201310/skin/big99008.jpg';
|
||||
|
||||
// 用户信息
|
||||
const userInfo = reactive({
|
||||
userId: '',
|
||||
username: '',
|
||||
nickName: '',
|
||||
deptId: '',
|
||||
deptName: ''
|
||||
deptName: '',
|
||||
role: '',
|
||||
avatar: ''
|
||||
});
|
||||
|
||||
// 获取用户信息
|
||||
const getUserInfo = () => {
|
||||
// 获取用户角色,判断是否有验收权限(admin或manage才能验收)
|
||||
const canAcceptance = computed(() => {
|
||||
return userInfo.role === 'admin' || userInfo.role === 'manage';
|
||||
});
|
||||
|
||||
// 获取图片完整URL(用于显示)
|
||||
const getImageUrl = (path) => {
|
||||
if (!path) return '';
|
||||
if (path.startsWith('http')) return path;
|
||||
return baseUrl + path;
|
||||
};
|
||||
|
||||
// 获取用户信息(从接口获取)
|
||||
const getUserInfo = async () => {
|
||||
try {
|
||||
const storedUserInfo = uni.getStorageSync('userInfo');
|
||||
if (storedUserInfo) {
|
||||
const info = JSON.parse(storedUserInfo);
|
||||
userInfo.userId = info.userId || '';
|
||||
userInfo.username = info.username || '';
|
||||
userInfo.nickName = info.nickName || '';
|
||||
userInfo.deptId = info.deptId || '';
|
||||
userInfo.deptName = info.deptName || '';
|
||||
const res = await getProfileDetail();
|
||||
if (res.code === 0 && res.data) {
|
||||
userInfo.userId = res.data.userId || '';
|
||||
userInfo.username = res.data.userName || '';
|
||||
userInfo.nickName = res.data.nickName || '';
|
||||
userInfo.deptId = res.data.deptId || '';
|
||||
userInfo.deptName = res.data.deptName || '';
|
||||
userInfo.avatar = res.data.avatar || '';
|
||||
// 获取角色信息
|
||||
if (res.data.roles && res.data.roles.length > 0) {
|
||||
userInfo.role = res.data.roles[0].roleKey || '';
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('获取用户信息失败:', e);
|
||||
// 如果接口失败,尝试从本地存储获取
|
||||
try {
|
||||
const storedUserInfo = uni.getStorageSync('userInfo');
|
||||
if (storedUserInfo) {
|
||||
const info = JSON.parse(storedUserInfo);
|
||||
userInfo.userId = info.userId || '';
|
||||
userInfo.username = info.username || '';
|
||||
userInfo.nickName = info.nickName || '';
|
||||
userInfo.deptId = info.deptId || '';
|
||||
userInfo.deptName = info.deptName || '';
|
||||
userInfo.role = info.role || '';
|
||||
userInfo.avatar = info.avatar || '';
|
||||
}
|
||||
} catch (storageError) {
|
||||
console.error('从本地存储获取用户信息失败:', storageError);
|
||||
}
|
||||
}
|
||||
};
|
||||
const infoList = ref([{
|
||||
@@ -264,9 +318,15 @@
|
||||
};
|
||||
|
||||
// 页面加载时调用接口
|
||||
onLoad(() => {
|
||||
// onLoad(() => {
|
||||
// getUserInfo();
|
||||
// getCheckPlanLists();
|
||||
// });
|
||||
// 页面每次显示时都会加载数据
|
||||
onShow(() => {
|
||||
getUserInfo();
|
||||
getCheckPlanLists();
|
||||
getHiddenDangerLists();
|
||||
});
|
||||
//我的隐患排查
|
||||
const hiddenDangerParams = ref({
|
||||
@@ -296,6 +356,42 @@
|
||||
getHiddenDangerLists();
|
||||
|
||||
});
|
||||
|
||||
// ========== 隐患排查相关跳转函数 ==========
|
||||
// 查看隐患详情
|
||||
const viewHazardDetail = (item) => {
|
||||
uni.navigateTo({
|
||||
url: `/pages/hiddendanger/view?hazardId=${item.hazardId}&assignId=${item.assignId}`
|
||||
})
|
||||
}
|
||||
|
||||
// 立即整改(待整改状态)
|
||||
const goRectification = (item) => {
|
||||
uni.navigateTo({
|
||||
url: `/pages/hiddendanger/rectification?hazardId=${item.hazardId}&assignId=${item.assignId}`
|
||||
})
|
||||
}
|
||||
|
||||
// 编辑整改信息(待验收状态)
|
||||
const editRectification = (item) => {
|
||||
uni.navigateTo({
|
||||
url: `/pages/hiddendanger/rectification?rectifyId=${item.rectifyId}&isEdit=1`
|
||||
})
|
||||
}
|
||||
|
||||
// 立即验收
|
||||
const goAcceptance = (item) => {
|
||||
uni.navigateTo({
|
||||
url: `/pages/hiddendanger/acceptance?hazardId=${item.hazardId}&assignId=${item.assignId}&rectifyId=${item.rectifyId}`
|
||||
})
|
||||
}
|
||||
|
||||
// 隐患交办
|
||||
const assignHazard = (item) => {
|
||||
uni.navigateTo({
|
||||
url: `/pages/hiddendanger/assignment?hazardId=${item.hazardId}&assignId=${item.assignId}`
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@@ -309,7 +405,13 @@
|
||||
z-index: 10;
|
||||
min-height: calc(100vh - 400rpx);
|
||||
}
|
||||
.content {}
|
||||
|
||||
// 头像图片样式
|
||||
.avatar-image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.grid-list {
|
||||
gap: 30rpx;
|
||||
@@ -370,4 +472,31 @@
|
||||
font-size: 28rpx;
|
||||
color: #2667E9;
|
||||
}
|
||||
|
||||
// 隐患等级标签样式
|
||||
.level-tag {
|
||||
padding: 4rpx 16rpx;
|
||||
border-radius: 8rpx;
|
||||
}
|
||||
|
||||
// 轻微隐患
|
||||
.level-minor {
|
||||
background: #F6FFED;
|
||||
border: 2rpx solid #B7EB8F;
|
||||
color: #52C41A;
|
||||
}
|
||||
|
||||
// 一般隐患
|
||||
.level-normal {
|
||||
background: #FFF7E6;
|
||||
border: 2rpx solid #FFD591;
|
||||
color: #FA8C16;
|
||||
}
|
||||
|
||||
// 重大隐患
|
||||
.level-major {
|
||||
background: #FFF1F0;
|
||||
border: 2rpx solid #FFA39E;
|
||||
color: #F5222D;
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user