797 lines
19 KiB
Vue
797 lines
19 KiB
Vue
<template>
|
||
<view class="addIssue">
|
||
<view class="fixedheader">
|
||
<headers :showBack="true" :themeType="true">
|
||
<view class="headerName"> 风险管控待办 </view>
|
||
</headers>
|
||
</view>
|
||
<view
|
||
class="search-box"
|
||
:style="{ paddingTop: mobileTopHeight + 44 + 'px' }"
|
||
>
|
||
<view class="uni-form-item">
|
||
<u-search
|
||
class="uni-input"
|
||
placeholder="搜索风险相关内容"
|
||
:show-action="false"
|
||
@change="loadData"
|
||
v-model="searchName"
|
||
></u-search>
|
||
</view>
|
||
</view>
|
||
<view class="content" :style="{ paddingTop: mobileTopHeight + 110 + 'px' }">
|
||
<u-collapse
|
||
ref="myCollapse"
|
||
v-if="selectWorkerInfoList.length > 0"
|
||
v-model="activeName"
|
||
accordion
|
||
>
|
||
<u-collapse-item
|
||
@change="onRegionChange"
|
||
:index="item.id"
|
||
v-for="item in selectWorkerInfoList"
|
||
:key="item.id"
|
||
>
|
||
<template v-slot:title>
|
||
<view class="item-cell flex-center item-cell_title">
|
||
{{ item.regionName }}({{
|
||
item.riskListPointTodoNum ? item.riskListPointTodoNum : 0
|
||
}})
|
||
</view>
|
||
</template>
|
||
<u-collapse
|
||
class="my-collapse"
|
||
ref="myCollapse1"
|
||
v-if="riskListPointList.length > 0"
|
||
accordion
|
||
>
|
||
<u-collapse-item
|
||
@change="onRiskPointChange(item)"
|
||
:index="item.id"
|
||
v-for="item in riskListPointList"
|
||
:key="item.id"
|
||
>
|
||
<template v-slot:title>
|
||
<view class="item-cell flex-center item-cell_title">
|
||
{{ fullPathCutOut(item.riskPointName, 2) }}({{
|
||
item.hazardSourceNumber
|
||
}})
|
||
</view>
|
||
</template>
|
||
<template v-if="riskListSourceList.length > 0">
|
||
<view
|
||
class="content-box content-box1"
|
||
v-for="ele in riskListSourceList"
|
||
:key="ele.id"
|
||
>
|
||
<view class="content-header">
|
||
<view class="header-title">{{
|
||
ele.subProjectWorkTask
|
||
}}</view>
|
||
<view
|
||
class="riskcolor riskcolor_table"
|
||
:class="{
|
||
riskcolor1: ele.riskLevel == 1,
|
||
riskcolor2: ele.riskLevel == 2,
|
||
riskcolor3: ele.riskLevel == 3,
|
||
riskcolor4: ele.riskLevel == 4,
|
||
}"
|
||
>{{ riskLevelUp(ele.riskLevel) }}</view
|
||
>
|
||
</view>
|
||
<view class="content-row">
|
||
<view>风险描述:</view>
|
||
<view>{{
|
||
ele.riskDescription ? ele.riskDescription : "--"
|
||
}}</view>
|
||
</view>
|
||
<view class="box-content">
|
||
<view>管控措施</view>
|
||
<view
|
||
@click.stop="ele.expandMoreShow = !ele.expandMoreShow"
|
||
>
|
||
{{ ele.expandMoreShow ? "收起" : "展开更多" }}
|
||
</view>
|
||
</view>
|
||
<view
|
||
:class="{ 'webkit-clamp_2': !ele.expandMoreShow }"
|
||
class="box-content_detail"
|
||
>
|
||
<view>
|
||
<view>
|
||
工程措施:{{
|
||
ele.engineeringMeasure ? ele.engineeringMeasure : "--"
|
||
}}
|
||
</view>
|
||
<view>
|
||
管理措施:{{
|
||
ele.managementMeasure ? ele.managementMeasure : "--"
|
||
}}
|
||
</view>
|
||
<view>
|
||
个体防护:{{
|
||
ele.personalProtection ? ele.personalProtection : "--"
|
||
}}
|
||
</view>
|
||
<view>
|
||
应急措施:{{
|
||
ele.emergencyMeasure ? ele.emergencyMeasure : "--"
|
||
}}
|
||
</view>
|
||
<view>
|
||
教育措施:{{
|
||
ele.educationalMeasure ? ele.educationalMeasure : "--"
|
||
}}
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<!-- <view class="content-row">
|
||
<view>管控措施:</view>
|
||
<view>{{ele.managementMeasure ? ele.managementMeasure : '--'}}</view>
|
||
</view> -->
|
||
<!-- <view class="content-row">
|
||
<view>工程措施:</view>
|
||
<view>{{ele.engineeringMeasure ? ele.engineeringMeasure : '--'}}</view>
|
||
</view>
|
||
<view class="content-row">
|
||
<view>管理措施:</view>
|
||
<view>{{ele.managementMeasure ? ele.managementMeasure : '--'}}
|
||
</view>
|
||
</view>
|
||
<view class="content-row">
|
||
<view>个体防护:</view>
|
||
<view>{{ele.personalProtection ? ele.personalProtection : '--'}}
|
||
</view>
|
||
</view>
|
||
<view class="content-row">
|
||
<view>应急措施:</view>
|
||
<view>{{ele.emergencyMeasure ? ele.emergencyMeasure : '--'}}
|
||
</view>
|
||
</view>
|
||
<view class="content-row">
|
||
<view>教育措施:</view>
|
||
<view>{{ele.educationalMeasure ? ele.educationalMeasure : '--'}}
|
||
</view>
|
||
</view> -->
|
||
<view class="content-btn">
|
||
<view @click="onNavigateToDetail(ele)">新增落实记录</view>
|
||
</view>
|
||
</view>
|
||
</template>
|
||
<view class="new-nodata1" v-else>
|
||
<view></view>
|
||
<text>暂无数据...</text>
|
||
</view>
|
||
</u-collapse-item>
|
||
</u-collapse>
|
||
<view class="new-nodata1" v-else>
|
||
<view></view>
|
||
<text>暂无数据...</text>
|
||
</view>
|
||
</u-collapse-item>
|
||
</u-collapse>
|
||
<view class="new-nodata" v-else>
|
||
<view></view>
|
||
<text>暂无数据...</text>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
export default {
|
||
data() {
|
||
return {
|
||
mobileTopHeight: 0,
|
||
projectDetail: {},
|
||
pageNo: 1,
|
||
pageSize: 10,
|
||
selectWorkerInfoList: [],
|
||
isLoadMore: false,
|
||
loadStatus: "more",
|
||
activeName: "",
|
||
activeName1: "",
|
||
searchName: "",
|
||
riskListPointList: [],
|
||
riskListSourceList: [],
|
||
riskLevelList: [
|
||
{
|
||
id: 1,
|
||
name: "重大风险",
|
||
},
|
||
{
|
||
id: 2,
|
||
name: "较大风险",
|
||
},
|
||
{
|
||
id: 3,
|
||
name: "一般风险",
|
||
},
|
||
{
|
||
id: 4,
|
||
name: "低风险",
|
||
},
|
||
],
|
||
regionIds: "",
|
||
};
|
||
},
|
||
onLoad(opts) {
|
||
console.log(112233, opts);
|
||
this.projectDetail = JSON.parse(uni.getStorageSync("projectDetail"));
|
||
|
||
this.getSelectWorkerInfoList();
|
||
},
|
||
mounted() {
|
||
var that = this;
|
||
uni.getSystemInfo({
|
||
success(res) {
|
||
that.mobileTopHeight = res.statusBarHeight ? res.statusBarHeight : 0;
|
||
uni.setStorageSync("systemInfo", res);
|
||
console.log(res);
|
||
},
|
||
});
|
||
},
|
||
onReachBottom() {
|
||
console.log(1);
|
||
// if (!this.isLoadMore) { //此处判断,上锁,防止重复请求
|
||
// this.isLoadMore = true
|
||
// this.pageNo += 1
|
||
// this.getSelectWorkerInfoList()
|
||
// }
|
||
},
|
||
onPullDownRefresh() {
|
||
console.log(2);
|
||
this.pageNo = 1;
|
||
this.selectWorkerInfoList = [];
|
||
this.getSelectWorkerInfoList();
|
||
},
|
||
methods: {
|
||
// 截取指定/字符串
|
||
fullPathCutOut(strName, startIndex) {
|
||
const parts = strName.split("/");
|
||
if (startIndex < 1 || startIndex >= parts.length) return ""; // n 无效或超出范围
|
||
return parts.slice(startIndex).join("/"); // 拼接第 n 部分之后的内容
|
||
},
|
||
onRiskPointChange(row) {
|
||
console.log("event", row);
|
||
let data = {
|
||
projectSn: this.projectDetail.projectSn,
|
||
pageNo: 1,
|
||
pageSize: -1,
|
||
pointId: row.id,
|
||
isMySourceToDoForWorkable: 1,
|
||
};
|
||
|
||
this.sendRequest({
|
||
url: "xmgl/riskListSource/page",
|
||
method: "GET",
|
||
data: data,
|
||
success: (res) => {
|
||
if (res.code == 200) {
|
||
this.riskListSourceList = res.result.records.map(item => {
|
||
return {
|
||
...item,
|
||
expandMoreShow: false,
|
||
}
|
||
});
|
||
this.$nextTick(() => {
|
||
console.log(this.$refs.myCollapse1);
|
||
const findIndex = this.selectWorkerInfoList.findIndex(
|
||
(item) => item.id == this.regionIds
|
||
);
|
||
this.$refs.myCollapse1[findIndex].init();
|
||
setTimeout(() => {
|
||
this.$refs.myCollapse.init();
|
||
}, 200);
|
||
});
|
||
}
|
||
},
|
||
});
|
||
},
|
||
onRegionChange(event) {
|
||
console.log("event", event);
|
||
this.regionIds = event.index;
|
||
let data = {
|
||
projectSn: this.projectDetail.projectSn,
|
||
pageNo: 1,
|
||
pageSize: -1,
|
||
regionIds: this.regionIds,
|
||
isMySourceToDoForWorkable: 1,
|
||
};
|
||
|
||
this.sendRequest({
|
||
url: "xmgl/riskListPoint/page",
|
||
method: "GET",
|
||
data: data,
|
||
success: (res) => {
|
||
if (res.code == 200) {
|
||
this.riskListPointList = res.result.records;
|
||
this.$nextTick(() => {
|
||
this.$refs.myCollapse.init();
|
||
});
|
||
}
|
||
},
|
||
});
|
||
},
|
||
onNavigateToDetail(row) {
|
||
uni.navigateTo({
|
||
url: `./addImplementingRecord?id=${row.id}`,
|
||
});
|
||
},
|
||
loadData() {
|
||
this.pageNo = 1;
|
||
this.selectWorkerInfoList = [];
|
||
this.getSelectWorkerInfoList();
|
||
},
|
||
getSelectWorkerInfoList() {
|
||
let data = {
|
||
pageNo: this.pageNo,
|
||
pageSize: this.pageSize,
|
||
projectSn: this.projectDetail.projectSn,
|
||
regionName: this.searchName,
|
||
isMySourceToDoForWorkable: 1,
|
||
};
|
||
|
||
this.sendRequest({
|
||
url: "xmgl/qualityRegion/notTreeList",
|
||
method: "POST",
|
||
data: data,
|
||
success: (res) => {
|
||
uni.hideLoading();
|
||
if (res.code == 200) {
|
||
console.log("workList======================", res);
|
||
// this.selectWorkerInfoList = this.selectWorkerInfoList.concat(res.result.records);
|
||
this.selectWorkerInfoList = res.result;
|
||
// if (res.result.records.length < this.pageSize) { //判断接口返回数据量小于请求数据量,则表示此为最后一页
|
||
// this.isLoadMore = true
|
||
// this.loadStatus = 'nomore'
|
||
// } else {
|
||
// this.isLoadMore = false
|
||
// // that.loadStatus='more'
|
||
// }
|
||
// uni.stopPullDownRefresh()
|
||
}
|
||
},
|
||
});
|
||
},
|
||
},
|
||
computed: {
|
||
riskLevelUp() {
|
||
return (riskLevel) => {
|
||
const find = this.riskLevelList.find((item) => riskLevel === item.id);
|
||
return find ? find.name : "--";
|
||
};
|
||
},
|
||
},
|
||
};
|
||
</script>
|
||
|
||
<style scoped lang="scss">
|
||
/deep/ .u-collapse-head {
|
||
padding: 12rpx 0;
|
||
background-color: #ffffff;
|
||
|
||
.u-collapse-title {
|
||
color: #498cec;
|
||
}
|
||
|
||
// .u-icon__icon {
|
||
// color: #498CEC !important;
|
||
// }
|
||
}
|
||
/deep/ .u-collapse-content {
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
padding-bottom: 13px;
|
||
}
|
||
|
||
.my-collapse {
|
||
width: 100%;
|
||
/deep/ .u-collapse-head {
|
||
padding-left: 66rpx;
|
||
background-color: #fbfbfb;
|
||
}
|
||
}
|
||
|
||
/deep/ .van-cell__title,
|
||
.item-cell_title {
|
||
font-weight: 500;
|
||
font-size: 30rpx;
|
||
color: #1a1a1a;
|
||
}
|
||
|
||
/deep/ .van-collapse-item__content,
|
||
/deep/ .uni-collapse-item__wrap-content {
|
||
background-color: #f2f3f7;
|
||
padding: 26rpx;
|
||
}
|
||
.riskcolor {
|
||
color: white !important;
|
||
padding: 8rpx 12rpx;
|
||
width: 140rpx;
|
||
margin-left: 10rpx;
|
||
flex: inherit !important;
|
||
text-align: center;
|
||
}
|
||
.riskcolor_table {
|
||
padding: 2rpx 12rpx;
|
||
display: inline-block;
|
||
}
|
||
|
||
.riskcolor1 {
|
||
background-color: #eb4047;
|
||
}
|
||
|
||
.riskcolor2 {
|
||
background-color: #ffbf00;
|
||
}
|
||
|
||
.riskcolor3 {
|
||
background-color: #ffff00;
|
||
}
|
||
|
||
.riskcolor4 {
|
||
background-color: #006fbf;
|
||
}
|
||
.icon-left,
|
||
.icon-right {
|
||
width: 32rpx;
|
||
height: 32rpx;
|
||
background-image: url("@/static/staffAttendance/attendance-icon1.png");
|
||
background-repeat: no-repeat;
|
||
background-size: 100% 100%;
|
||
}
|
||
|
||
.icon-right {
|
||
transform: rotate(90deg);
|
||
}
|
||
|
||
.icon-top {
|
||
transform: rotate(-90deg);
|
||
}
|
||
|
||
.new-nodata {
|
||
position: absolute;
|
||
top: 50%;
|
||
left: 50%;
|
||
transform: translate(-50%, -50%);
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
justify-content: center;
|
||
|
||
> view {
|
||
width: 300rpx;
|
||
height: 300rpx;
|
||
background-image: url("@/static/staffAttendance/nodata.png");
|
||
background-repeat: no-repeat;
|
||
background-size: 100% 100%;
|
||
}
|
||
|
||
> text {
|
||
font-size: 22rpx;
|
||
color: #808080;
|
||
margin-top: 60rpx;
|
||
}
|
||
}
|
||
|
||
.new-nodata1 {
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
justify-content: center;
|
||
background-color: white;
|
||
padding: 20rpx;
|
||
width: 698rpx;
|
||
margin-top: 26rpx;
|
||
|
||
> view {
|
||
width: 300rpx;
|
||
height: 300rpx;
|
||
background-image: url("@/static/staffAttendance/nodata.png");
|
||
background-repeat: no-repeat;
|
||
background-size: 100% 100%;
|
||
}
|
||
|
||
> text {
|
||
font-size: 22rpx;
|
||
color: #808080;
|
||
margin-top: 60rpx;
|
||
}
|
||
}
|
||
|
||
/deep/ .van-cell,
|
||
.item-cell {
|
||
padding: 22rpx 26rpx;
|
||
}
|
||
|
||
/deep/ .van-cell__title,
|
||
.item-cell_title {
|
||
font-weight: 500;
|
||
font-size: 30rpx;
|
||
color: #1a1a1a;
|
||
}
|
||
|
||
/deep/ .van-collapse-item__content,
|
||
/deep/ .u-collapse-item__wrap-content {
|
||
background-color: #f2f3f7;
|
||
padding: 26rpx;
|
||
}
|
||
|
||
.content-main {
|
||
padding: 26rpx;
|
||
}
|
||
|
||
.content-box1 {
|
||
// height: 554rpx;
|
||
margin-top: 26rpx;
|
||
position: relative;
|
||
padding-bottom: 120rpx !important;
|
||
|
||
.content-btn {
|
||
width: 100%;
|
||
padding: 18rpx 26rpx;
|
||
background: #ffffff;
|
||
box-shadow: 0rpx -8rpx 8rpx 0rpx rgba(0, 0, 0, 0.05);
|
||
position: absolute;
|
||
bottom: 0;
|
||
left: 0;
|
||
display: flex;
|
||
justify-content: flex-end;
|
||
|
||
> view {
|
||
// width: 216rpx;
|
||
background: #5181f6;
|
||
border-radius: 6rpx;
|
||
padding: 18rpx 24rpx;
|
||
font-size: 28rpx;
|
||
color: #ffffff;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
}
|
||
}
|
||
.box-content {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
margin-top: 26rpx;
|
||
font-size: 28rpx;
|
||
|
||
> view:first-child {
|
||
color: #808080;
|
||
}
|
||
|
||
> view:last-child {
|
||
font-size: 24rpx;
|
||
color: #4d8eec;
|
||
}
|
||
}
|
||
.box-content_detail {
|
||
font-size: 28rpx;
|
||
color: #4d4d4d;
|
||
margin-top: 4rpx;
|
||
}
|
||
|
||
.webkit-clamp_2 {
|
||
display: -webkit-box;
|
||
-webkit-box-orient: vertical;
|
||
-webkit-line-clamp: 2;
|
||
/* 限制为两行 */
|
||
overflow: hidden;
|
||
}
|
||
.content-row {
|
||
display: flex;
|
||
align-items: flex-start;
|
||
padding: 20rpx 0;
|
||
// border-bottom: 2rpx solid #F2F2F2;
|
||
font-size: 28rpx;
|
||
|
||
> view:first-child {
|
||
width: 162rpx;
|
||
color: #808080;
|
||
}
|
||
|
||
> view:last-child {
|
||
flex: 1;
|
||
color: #4d4d4d;
|
||
word-break: break-all;
|
||
// display: -webkit-box;
|
||
// -webkit-box-orient: vertical;
|
||
// -webkit-line-clamp: 1;
|
||
// /* 限制为两行 */
|
||
// overflow: hidden;
|
||
}
|
||
}
|
||
|
||
.attachment {
|
||
flex-direction: column;
|
||
align-items: flex-start;
|
||
|
||
> view:not(:first-child) {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
margin-top: 32rpx;
|
||
width: 100%;
|
||
|
||
> view:first-child {
|
||
display: flex;
|
||
align-items: center;
|
||
width: 70%;
|
||
|
||
> image {
|
||
width: 40rpx;
|
||
height: 40rpx;
|
||
}
|
||
|
||
> view {
|
||
font-size: 28rpx;
|
||
color: #171717;
|
||
margin-left: 32rpx;
|
||
overflow: hidden;
|
||
white-space: nowrap;
|
||
text-overflow: ellipsis;
|
||
}
|
||
}
|
||
|
||
> view:last-child {
|
||
font-size: 24rpx;
|
||
color: #808080;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
.content-box {
|
||
width: 698rpx;
|
||
padding: 26rpx;
|
||
background: #ffffff;
|
||
box-shadow: 0rpx 4rpx 10rpx 0rpx rgba(3, 92, 181, 0.1),
|
||
0rpx 8rpx 40rpx 0rpx rgba(0, 0, 0, 0.05);
|
||
// border-radius: 16rpx;
|
||
|
||
.content-header {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
|
||
.header-title {
|
||
font-weight: 500;
|
||
font-size: 30rpx;
|
||
color: #1a1a1a;
|
||
}
|
||
|
||
// >view:last-child {
|
||
// font-size: 22rpx;
|
||
// color: #4D4D4D;
|
||
// background-color: #FFFF00;
|
||
// padding: 4rpx 14rpx;
|
||
// }
|
||
}
|
||
}
|
||
|
||
.fixedheader {
|
||
position: fixed;
|
||
top: 0;
|
||
left: 0;
|
||
width: 100%;
|
||
z-index: 999;
|
||
|
||
/deep/ .headerBox {
|
||
border-bottom: none;
|
||
}
|
||
|
||
.headerName {
|
||
z-index: 1;
|
||
}
|
||
}
|
||
|
||
.addIssue {
|
||
min-height: 100vh;
|
||
background-color: #eff3f7;
|
||
}
|
||
|
||
/deep/ .u-collapse-item__title-arrow {
|
||
display: none;
|
||
}
|
||
|
||
.flex-center {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
}
|
||
|
||
.icon-screen {
|
||
display: flex;
|
||
flex-direction: column;
|
||
margin-left: 22rpx;
|
||
|
||
> view:nth-child(1) {
|
||
border-bottom: 12rpx solid #333333;
|
||
border-right: 10rpx solid transparent;
|
||
border-left: 10rpx solid transparent;
|
||
}
|
||
|
||
> view:nth-child(2) {
|
||
border-top: 12rpx solid #333333;
|
||
border-right: 10rpx solid transparent;
|
||
border-left: 10rpx solid transparent;
|
||
margin-top: 4rpx;
|
||
}
|
||
|
||
.icon-screen_active {
|
||
border-bottom-color: #108bc7 !important;
|
||
border-top-color: #108bc7 !important;
|
||
}
|
||
}
|
||
|
||
.search-box {
|
||
background-color: white;
|
||
width: 100%;
|
||
position: fixed;
|
||
z-index: 99;
|
||
|
||
.uni-form-item {
|
||
padding: 20rpx 26rpx;
|
||
position: relative;
|
||
display: flex;
|
||
|
||
.uni-input {
|
||
border: 2rpx solid #e4e4e4;
|
||
border-radius: 68rpx;
|
||
padding: 0;
|
||
font-size: 30rpx;
|
||
color: #444444;
|
||
|
||
/deep/ .u-content {
|
||
background-color: #ffffff !important;
|
||
|
||
.u-input {
|
||
background-color: #ffffff !important;
|
||
color: #999999 !important;
|
||
}
|
||
}
|
||
}
|
||
|
||
.search-btn {
|
||
width: 72rpx;
|
||
height: 72rpx;
|
||
background: #498cec;
|
||
border-radius: 48rpx;
|
||
margin-left: 30rpx;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
|
||
> image {
|
||
width: 50rpx;
|
||
height: 50rpx;
|
||
}
|
||
}
|
||
}
|
||
|
||
/deep/ .u-dropdown {
|
||
padding-right: 60rpx;
|
||
}
|
||
|
||
.calendar_box {
|
||
position: absolute;
|
||
right: 28rpx;
|
||
bottom: 20rpx;
|
||
|
||
.calendar {
|
||
width: 32rpx;
|
||
height: 32rpx;
|
||
background-image: url("@/static/workTicketManage/calendar.png");
|
||
background-repeat: no-repeat;
|
||
background-size: 100% 100%;
|
||
}
|
||
|
||
.calendar_active {
|
||
background-image: url("@/static/workTicketManage/calendar-active.png");
|
||
}
|
||
}
|
||
}
|
||
</style> |