integrated_traffic_uniapp/pages/application/hidden-danger-check-standard/custom/list.vue

443 lines
14 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template><!-- 源自pages/application/hidden-trouble-investigation/hidden-trouble-app/hidden-trouble-app -->
<view>
<cu-custom bgColor="bg-gradual-blueness" :isBack="true" :isRingt="true">
<block slot="backText">返回</block>
<block slot="content">隐患清单排查</block>
<block slot="right">
<view @tap.stop="openAuth('CAMERA')">清单扫描</view>
</block>
</cu-custom>
<view class="top-fixed">
<scroll-view scroll-x class="bg-white nav" scroll-with-animation :scroll-left="scrollLeft">
<view class="flex text-center">
<view class="cu-item flex-sub" :class="index==TabCur?'text-blue cur':''" v-for="(item,index) in tabNav" :key="index" @tap="tabSelect" :data-id="index">
{{tabNav[index]}}
</view>
</view>
</scroll-view>
<view class="line"></view>
<view>
<view class="cu-bar search bg-white">
<view class="search-form radius" @tap="showDeptTree">{{this.DEPTNAME}}</view>
<tki-tree v-show="treeShow" ref="tkiTree" :selectParent=true :range="treeNode" rangeKey="name"
@confirm="depttreeConfirm" @cancel="depttreeCancel"></tki-tree>
<view class="action">
<button class="cu-btn bg-green shadow-blur radius" @click="search()">搜索</button>
<button class="cu-btn bg-blue shadow-blur radius" @click="reset()" style="margin-left: 10px">重置</button>
</view>
</view>
<view class="line"></view>
</view>
</view>
<block v-if="TabCur==0">
<scroll-view class="dy-scroll-nobg" scroll-y :style="'top:'+sTop+'px;height:calc(100vh - '+totalHeight+'px)'">
<view v-if="list.length>0" >
<view class="dy-card" v-for="item in list" :key="item.CUSTOM_ID" @click="$noMultipleClicks(goToList,{listId:item.CUSTOM_ID,listName:item.NAME,userid:item.USER_ID,BAO_BAO_TYPE:item.BAO_BAO_TYPE})">
<view class="dy-card-title">
<text><text v-if="item.USER_ID == loginUserId" style="margin-right: 10upx;color: #07BB07;">★</text>{{item.NAME}}</text>
<text class="cuIcon-right f30 text-gray"></text>
</view>
<view class="dy-card-content">
<view class="dy-sub-stitle">
<text class="text-grey">清单类型:{{item.TYPENAME}}</text>
<text class="text-grey">排查周期:{{item.PERIODNAME}}</text>
</view>
<view class="dy-sub-stitle">
<text class="text-grey">包含检查项:{{item.count}}</text>
<text class="text-grey">负责人:{{item.USER_NAME}}</text>
</view>
<view class="dy-stitle">
<text class="text-grey">起止时间:{{item.START_DATE}} - {{item.END_DATE}}</text>
</view>
<!-- <view class="mb12">
<text class="cu-tag bg-red radius">重大风险:{{item.ACOUNT}}</text>
<text class="cu-tag bg-orange radius">较大:{{item.BCOUNT}}</text>
<text class="cu-tag bg-yellow radius text-white">一般:{{item.CCOUNT}}</text>
<text class="cu-tag bg-blue radius">低:{{item.DCOUNT}}</text>
</view>-->
<!-- <view class="cu-progress radius striped active">-->
<!-- <view class="bg-olive" :style="[{ width:loading?((item.checkedItem>0 && item.count>0)?(item.checkedItem/item.count*100):0)+'%':''}]">{{(item.checkedItem>0 && item.count>0)?(item.checkedItem/item.count*100):0}}%</view>-->
<!-- </view>-->
</view>
</view>
</view>
<view v-else-if="dataFlag=='noData'" class="dy-null">
<view class="dy-null-img">
<image :src="background[dataFlag].url" mode=""></image>
</view>
<view class="dy-null-title">
{{background[dataFlag].msg}}
</view>
</view>
<!-- <view class="cu-tabbar-height"></view> -->
</scroll-view>
</block>
<block v-if="TabCur==1">
<scroll-view class="dy-scroll-nobg" scroll-y :style="'top:'+sTop+'px;height:calc(100vh - '+totalHeight+'px)'">
<view v-if="list1.length>0" >
<view class="dy-card" v-for="item in list1" :key="item.CUSTOM_ID" @click="$noMultipleClicks(goToList,{listId:item.CUSTOM_ID,listName:item.NAME,userid:item.USER_ID,BAO_BAO_TYPE:item.BAO_BAO_TYPE})">
<view class="dy-card-title">
<text><text v-if="item.USER_ID == loginUserId" style="margin-right: 10upx;color: #07BB07;">★</text>{{item.NAME}}</text>
<text class="cuIcon-right f30 text-gray"></text>
</view>
<view class="dy-card-content">
<view class="dy-sub-stitle">
<text class="text-grey">清单类型:{{item.TYPENAME}}</text>
<text class="text-grey">排查周期:{{item.PERIODNAME}}</text>
</view>
<view class="dy-sub-stitle">
<text class="text-grey">包含检查项:{{item.count}}</text>
<text class="text-grey">负责人:{{item.USER_NAME}}</text>
</view>
<view class="dy-stitle">
<text class="text-grey">起止时间:{{item.START_DATE}} - {{item.END_DATE}}</text>
</view>
<!-- <view class="mb12">-->
<!-- <text class="cu-tag bg-red radius">重大风险:{{item.ACOUNT}}</text>-->
<!-- <text class="cu-tag bg-orange radius">较大:{{item.BCOUNT}}</text>-->
<!-- <text class="cu-tag bg-yellow radius text-white">一般:{{item.CCOUNT}}</text>-->
<!-- <text class="cu-tag bg-blue radius">低:{{item.DCOUNT}}</text>-->
<!-- </view>-->
</view>
</view>
</view>
<view v-else-if="dataFlag=='noData'" class="dy-null">
<view class="dy-null-img">
<image :src="background[dataFlag].url" mode=""></image>
</view>
<view class="dy-null-title">
{{background[dataFlag].msg}}
</view>
</view>
<view class="cu-tabbar-height"></view>
</scroll-view>
</block>
<yk-authpup ref="authpup" type="top" @changeAuth="$noMultipleClicks(scan)" :permissionID="permissionID"></yk-authpup>
</view>
</template>
<script>
import {
basePath,loginUser,loginSession
} from '@/common/tool.js';
import tkiTree from "@/components/select-tree/select-tree.vue"
import ykAuthpup from "@/components/yk-authpup/yk-authpup"
export default {
components: {
tkiTree,ykAuthpup
},
data() {
return {
permissionID:'',
treeShow:false,
noClick:true,
initflag:false,
sTop:0,
totalHeight:0,
TabCur: 0,
scrollLeft: 0,
tabNav: ['待排查', '已排查'],
loading: false,
list: [],
list1: [],
totalList:[],
treeNode: [], //部门下拉数据
DEPT: '',
DEPTNAME: '',
page: 1,
rows: 1000,
totalCount:0,
isEnd: false,
total:0,
dataFlag:'noData',
isIndex:0,
loginUserId:'',
noExamine:false,// 是否禁止检查非本人清单
FKEY:'examine'
}
},
onLoad:async function() {
let that = this;
this.loginUserId = loginUser.USER_ID;
this.background = require('@/common/background.json');
await this.getFunc();
this.getData();
// setTimeout(function() {
// that.loading = true
// }, 500)
loginSession();
},
onReady() {
let that=this;
let CustomBar = this.CustomBar;
uni.getSystemInfo({ //调用uni-app接口获取屏幕高度
success(res) { //成功回调函数
let titleH=uni.createSelectorQuery().select(".top-fixed"); //想要获取高度的元素名class/id
titleH.boundingClientRect(data=>{
that._data.sTop=data.height //计算高度:元素高度=窗口高度-元素距离顶部的距离data.top
that.totalHeight = data.height+CustomBar
}).exec()
}
})
},
async onShow() {
var _this = this;
if(_this.initflag){
_this.initflag = false;
_this.list = [];
_this.list1 = [];
await this.getFunc();
this.getData()
}
},
methods: {
tabSelect(e) {
this.TabCur = e.currentTarget.dataset.id;
this.scrollLeft = (e.currentTarget.dataset.id - 1) * 60
},
search (){
var _this = this;
_this.list = [];
_this.list1 = [];
this.getData()
},
reset (){
this.DEPT = '';
this.DEPTNAME = '';
this.list = [];
this.list1 = [];
this.getData()
},
getData(){
var _this=this;
console.info(_this.isEnd);
if (_this.isEnd){
return
}
uni.showLoading({
title: '加载中'
})
console.log(this.DEPT)
uni.request({
url: basePath + '/app/hiddenDangerCheckStandardCustom/checkList', // /app/listmanager/checkList
method: 'POST',
dataType: 'json',
header: {
'Content-type':'application/x-www-form-urlencoded'
},
data: {
USER_NAME: loginUser.NAME,
CHECK_DEPARTMENT_ID: loginUser.DEPARTMENT_ID,
SUB_DEPARTMENT_IDS: this.DEPT, //选择的部门
IS_MAIN:loginUser.ISMAIN,
CORPINFO_ID:loginUser.CORPINFO_ID,
USER_ID:loginUser.USER_ID,
ISSUPERVISE:loginUser.ISSUPERVISE,
},
success: (res) => {
if("success" == res.data.result){
var content = res.data.varList;
for(var i=0;i<content.length;i++){
if(content[i].checkCount==0){
this.list.push(content[i]);
this.totalList.push(content[i]);
}else{
this.list1.push(content[i]);
this.totalList.push(content[i]);
}
}
uni.hideLoading();
this.getDept()
}else{
uni.showToast({
icon:'none',
title: '',
duration: 2000
});
}
}
})
},
openAuth(permissionID){
this.permissionID = permissionID;
setTimeout(()=>{
this.$refs['authpup'].open();
},200)
},
scan(){
let _this=this;
uni.scanCode({
success: function (res) {
let flag=false;
let listId = res.result;
for(var i=0;i<_this.totalList.length;i++){
if(_this.totalList[i].CUSTOM_ID==listId){
flag=true;
_this.goToList(
{
listId:_this.totalList[i].CUSTOM_ID,
listName:_this.totalList[i].NAME,
userid:_this.totalList[i].USER_ID,
BAO_BAO_TYPE:_this.totalList[i].BAO_BAO_TYPE
}
);
break;
}
}
if(!flag){
uni.showToast({
title: "",
duration: 2000
});
}
}
});
},
getDept() {
var _this = this;
uni.request({
url: basePath + '/app/sys/listTree', //
method: 'POST',
dataType: 'json',
header: {
'Content-type': 'application/x-www-form-urlencoded'
},
data: {
DEPARTMENT_ID:loginUser.DEPARTMENT_ID,
CORPINFO_ID:loginUser.CORPINFO_ID,
USER_ID:loginUser.USER_ID,
},
success: (res) => {
if ("success" == res.data.result) {
_this.treeNode = eval(res.data.zTreeNodes);
} else {
uni.showToast({
title: res.data.message,
duration: 2000
});
}
}
});
},
// 确定回调事件
depttreeConfirm(e) {
this.DEPT = e[0].id;
this.DEPTNAME = e[0].name;
this.uindex = -1;
this.treeShow = false
this.$forceUpdate(); //强制刷新
this.list = [];
this.list1 = [];
this.getData();
},
showDeptTree() {
this.treeShow = true
this.$refs.tkiTree._show();
},
// 取消回调事件
depttreeCancel(e) {
this.treeShow = false
},
// 滑动到底方法
scrolltolower(){
var _this = this;
_this.getData();
},
getFunc(){
return new Promise((resolve, reject) => {
var _this = this;
uni.showLoading({
title: '加载中'
})
uni.request({
url: basePath + '/app/corpfunc/findByKey',
method: 'POST',
dataType: 'json',
header: {
'Content-type': 'application/x-www-form-urlencoded'
},
data: {
FKEY: _this.FKEY,
CORPINFO_ID: loginUser.CORPINFO_ID,
USER_ID: loginUser.USER_ID,
},
success: (res) => {
if ("success" == res.data.result) {
uni.hideLoading();
if (res.data.pd != null && res.data.pd.CORPFUNC_ID) {
_this.noExamine = true;
}
resolve()
} else {
uni.showToast({
icon: 'none',
title: '系统异常',
duration: 2000
});
reject()
}
}
})
})
},
//跳转事件
goToList(e) {
var _this = this;
console.info(_this.noExamine);
console.info(e.userid != _this.loginUserId);
if(_this.noExamine && e.userid != _this.loginUserId){
uni.showToast({
icon:'none',
title: '仅允许检查本人清单',
duration: 2000
});
} else {
uni.navigateTo({
url: '/pages/application/hidden-danger-check-standard/custom/list-item?listId='+e.listId+'&listName='+e.listName + '&baoBaoType='+e.BAO_BAO_TYPE
});
}
}
}
}
</script>
<style>
.dy-list {
background: #fff;
margin-top: 2upx;
}
.dy-card{
background-color: #fff;
border-radius: 10upx;
margin:30upx
}
.dy-stitle{
margin: 16upx 0;
}
.dy-sub-stitle{
margin: 16upx 0;
display: flex;
justify-content: space-between;
}
.dy-card-title{
display: flex;
justify-content: space-between;
border-bottom: 1px solid #eee;
min-height: 80upx;
line-height: 80upx;
padding: 0 30upx;
}
.dy-card-content{
padding: 0upx 30upx 30upx;
}
</style>