提交代码

main
姜玉琦 2024-07-01 23:58:39 +08:00
parent c3cf671949
commit fc5b619e58
48 changed files with 2914 additions and 1256 deletions

View File

@ -0,0 +1,63 @@
import {request} from '../utils/request'
// 统计劳务人员信息
export function groupAllByParams(data){
return request({
url: '/wechat/attendance/v1/groupAllByParams',
method: 'post',
data: data
})
}
// 统计最近出勤信息
export function findGroupAllByDays(data){
return request({
url: '/wechat/attendance/v1/findGroupAllByDays',
method: 'post',
data: data
})
}
// 统计劳务人员信息
export function groupUserByParams(data){
return request({
url: '/wechat/attendance/v1/groupUserByParams',
method: 'post',
data: data
})
}
// 劳务人员详情
export function attendanceUser(id){
return request({
url: '/wechat/attendance/v1/attendanceUser/'+id,
method: 'get'
})
}
// 劳务人员列表
export function attendanceUserList(data){
return request({
url: '/wechat/attendance/v1/attendanceUserList',
method: 'get',
data: data
})
}
// 统计人员出勤信息
export function groupDataByParams(data){
return request({
url: '/wechat/attendance/v1/groupDataByParams',
method: 'post',
data: data
})
}
// 出勤数据列表
export function attendanceDataList(data){
return request({
url: '/wechat/attendance/v1/attendanceDataList',
method: 'get',
data: data
})
}

View File

@ -34,7 +34,7 @@ App({
reqUrl:'https://szgcwx.jhncidg.com',
//reqUrl:'http://127.0.0.1:8091',
uploadUrl:"https://szgcwx.jhncidg.com/wechat",
//uploadUrl:'http://127.0.0.1:8091/wechat',
//uploadUrl:'http://127.0.0.1:8082/wechat',
//御景路数字化集成管控平台接口访问域名
szhUrl:'https://szh.makalu.cc',

View File

@ -105,8 +105,9 @@
"project_insurance/add/index",
"project_insurance/info/index",
"project_insurance/list/index",
"project_deptWorks/add/index",
"project_deptWorks/list/index",
"project_attendance/project_attendanceUser/list/index",
"project_attendance/project_attendanceUser/info/index",
"project_attendance/project_attendanceData/list/index",
"project_standard/list/index",
"project_standard/add/index",
"project_standard/info/index",

View File

@ -1385,11 +1385,19 @@ swiper-item video {
color: #fd8401;
}
.color_orange {
color: #fd8401;
}
.color_green {
color: #1ab400;
font-weight: 800;
}
.color_red {
color: #fd6060;
}
.color_blue {
color: #45affb;
}

View File

@ -67,9 +67,11 @@ Component({
})
},
getData() {
var max=0;
var data = this.data.data
var max = data[0].total
for (let i = data.length-1; i >=0 ; i--) {
max += data[i].total;
}
var nameData = [];
var totalData = []
var background = []
@ -101,18 +103,18 @@ Component({
bottom: "-12%",
containLabel: true,
},
legend: {
top: "0",
//icon: "circle",
itemWidth: 10,
itemHeight:10,
itemGap: 8,
textStyle: {
fontSize: 12,
color:'#c6d9fa'
},
data: legend,
},
// legend: {
// top: "0",
// //icon: "circle",
// itemWidth: 10,
// itemHeight:10,
// itemGap: 8,
// textStyle: {
// fontSize: 12,
// color:'#c6d9fa'
// },
// data: legend,
// },
xAxis: [{
show: false,
},

View File

@ -0,0 +1,298 @@
import {
groupDataByParams,
attendanceDataList
} from '../../../../api/projectAttendance'
const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
maxDate: new Date(2088, 1, 1).getTime(),
type: "3",
initData: {},
projectId: "",
companyTypeId: "101",
listData: [],
pageNum: 1,
pageSize: 50,
lastDataSize: 50,
list: [],
request: app.globalData.reqUrl,
nactive: 0,
labourTypeList: [{
name: "总包人员",
total: 0,
}, {
name: "监理人员",
total: 0,
}, {
name: "劳务人员",
total: 0,
}],
search: "",
searchDate: "",
choiceShow: false,
workerId: "",
reId: "",
rdsDate:"rdsDate"
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
let {
id,
workerId
} = options
if (workerId === undefined) {
workerId = "";
}
this.setData({
reId: id,
workerId,
projectId: app.globalData.projectId,
initData: {
text: app.globalData.projectName,
id: app.globalData.projectId
},
search: "",
pageNum: 1,
pageSize: 50,
lastDataSize: 50,
listData: []
})
this.getListData();
},
// 事件委托
selected(e) {
let nav = e.target.dataset.set;
let companyTypeId = "";
if (nav == 0) {
companyTypeId = "101";
} else if (nav == 1) {
companyTypeId = "102";
} else {
companyTypeId = "103";
}
this.setData({
pageNum: 1,
pageSize: 50,
lastDataSize: 50,
listData: [],
companyTypeId,
nactive: nav
})
this.getListData();
},
/**
* 条件筛选
* @param {*} options
*/
onInputSearch: function (options) {
this.setData({
search: options.detail.value,
})
},
/**
* 立即查询
*/
onQueryData:function(){
this.setData({
workerId: "",
pageNum: 1,
pageSize: 50,
lastDataSize: 50,
listData: []
})
this.setData({
choiceShow: false
})
this.getListData();
},
//考勤日期
onInputTime(e) {
this.setData({
searchDate: e.detail,
pageNum: 1,
pageSize: 50,
lastDataSize: 50,
listData: []
})
this.setData({
choiceShow: false
})
this.getListData();
},
/**
* 查询项目质量隐患排查数据
*/
getListData() {
//进入这里说明数据加载完毕
if (this.data.lastDataSize < this.data.pageSize) {
//app.toast("已经到底了,暂无可继续加载数据!")
return;
}
let params = {
"companyTypeId": this.data.workerId ? 999 : this.data.companyTypeId,
"projectId": this.data.projectId,
pageNum: this.data.pageNum,
pageSize: this.data.pageSize,
workerId: this.data.workerId,
workerName: this.data.search,
attendanceTime: this.data.searchDate
}
var that = this;
this.initGroupDataByParams();
attendanceDataList(params).then(res => {
//这里处理this.data.lastDataSize=this.data.pageSize
if (that.data.list.length > 0 && res.rows.length > 0 && that.data.list[0].id == res.rows[0].id) {
that.setData({
lastDataSize: 0,
})
} else {
res.rows.forEach(item =>{
if(item.vendorsCode!='yanzhu'){
if(item.attendanceTime==item.attendanceOutTime){
if(item.remark=="L"){
item.attendanceTime="";
}else{
item.attendanceOutTime="";
}
}
}
});
that.setData({
pageNum: that.data.pageNum + 1,
lastDataSize: res.rows.length,
list: res.rows,
listData: that.data.listData.concat(res.rows)
})
}
});
},
/**
* 初始化考勤信息
*/
initGroupDataByParams() {
let zb = 0;
let jl = 0;
let lw = 0;
groupDataByParams({
projectId: app.globalData.projectId,
workerName: this.data.search,
attendanceTime: this.data.searchDate
}).then(res => {
if (res.data.length > 0) {
res.data.forEach(item => {
if (item.companyTypeId == 8) {
jl += item.total;
} else if (item.companyTypeId == 1 || item.companyTypeId == 6) {
zb += item.total;
} else {
lw += item.total;
}
});
}
this.setData({
"labourTypeList[0].total": zb,
"labourTypeList[1].total": jl,
"labourTypeList[2].total": lw,
})
});
},
returnToPage: function () {
if (this.data.reType) {
wx.redirectTo({
url: '../../project_attendanceUser/info/index?id=' + this.data.reId,
})
} else {
wx.redirectTo({
url: '../../../../pages/xiangmugaikuang/index',
})
}
},
//项目切换 返回值
onProjectSelect(e) {
let projectId = e.detail.id;
let projectName = e.detail.text;
app.globalData.projectId = projectId;
app.globalData.projectName = projectName;
this.onLoad({});
},
onScrollToLower() {
console.log("滚动条到底了,开始加载新数据");
this.getListData();
},
choice() {
this.setData({
choiceShow: true
});
},
onCloseTest() {
this.setData({
choiceShow: false
});
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

View File

@ -0,0 +1,8 @@
{
"usingComponents": {
"van-overlay": "@vant/weapp/overlay/index" ,
"van-popup": "@vant/weapp/popup/index"
},
"navigationStyle":"custom",
"navigationBarTitleText": "考勤信息管理"
}

View File

@ -0,0 +1,87 @@
<wxs module="format" src="/utils/format.wxs"></wxs>
<view class="header_title">
<view class="header_title_row">
<van-row>
<van-col span="3">
<view class="header_img" bindtap="returnToPage">
<image src="/images/left.png"></image>
</view>
</van-col>
<van-col wx:if="{{!workerId}}" span="3">
<view class="header_img">
<image src="{{(!search && !searchDate)?'https://szgcwx.jhncidg.com/staticFiles/icon/se.png':'https://szgcwx.jhncidg.com/staticFiles/icon/se_ac.png'}}" bindtap="choice"></image>
</view>
</van-col>
<van-col span="{{workerId?'17':'13'}}">
<view class="header_name">人员考勤管理</view>
</van-col>
</van-row>
</view>
</view>
<scroll-view class="max_content_scroll" type="list" scroll-y bindscrolltolower="onScrollToLower">
<project-select init="{{initData}}" bindchange="onProjectSelect" id="projectSel"></project-select>
<view wx:if="{{!workerId}}" class="information-review-tab" bindtap="selected">
<view class="{{nactive===index?'active':''}}" data-set="{{index}}" wx:for="{{labourTypeList}}" wx:key="index">
{{item.name}}({{item.total}})
</view>
</view>
<view class="inspect_max_scroll">
<view class="safety_prop module_title_flex summury" wx:if="{{!workerId && !searchDate}}">
<text class="color_orange">未筛选时间,默认展示当天考勤数据!</text>
</view>
<view class="inspect_for_scroll" v-if="{{ listData.length>0 }}" wx:for="{{listData}}" wx:key="index">
<view class="inspect_for_bgd">
<view class="inspect_list_title">
<view class="inspect_list_title_label inspect_list_title_width">
<view class="inspect_list_title_number">{{index < 9 ?'0'+(index+1):(index+1)}}</view>
<view class="module_title module_title_flex inspect_list_title_label">考勤时间:{{format.dateStrEv(item.attendanceTime,item.attendanceOutTime)}}</view>
</view>
</view>
<view class="inspect_list_info">
<view class="inspect_list_info_details">
<view class="inspect_list_info_img">
<van-image wx:if="{{item.scanPhoto}}" width="120rpx" height="120rpx" fit="cover" src="{{format.isHttpImg(item.scanPhoto)?item.scanPhoto:(request+item.scanPhoto)}}" />
<van-image wx:else width="120rpx" height="120rpx" fit="cover" src="{{format.isHttpImg(item.workerPhoto)?item.workerPhoto:(request+item.workerPhoto)}}" />
</view>
<view class="inspect_list_info_data">
<view class="inspect_list_info_data_prop color_blue">人员姓名:<text>{{item.workerName}}</text></view>
<view class="inspect_list_info_data_prop">入场时间:
<text wx:if="{{item.attendanceTime}}">{{format.timeStr(item.attendanceTime)}}</text>
<text wx:else class="color_red">未打卡</text>
</view>
<view class="inspect_list_info_data_prop">离场时间:
<text wx:if="{{item.attendanceOutTime}}">{{format.timeStr(item.attendanceOutTime)}}</text>
<text wx:else class="color_red">未打卡</text>
</view>
</view>
</view>
<view class="inspect_list_info_position">
<text class="color_purple">单位名称:{{item.companyName}}</text>
</view>
</view>
</view>
</view>
<view wx:if="{{listData.length==0}}">
<view style="padding-top: 70px;text-align: -webkit-center;">
<image src="https://szgcwx.jhncidg.com/staticFiles/nodata.png" style="width: 130px;height: 105px;"></image>
<view style="color: #a5abbb;">暂无数据</view>
</view>
</view>
</view>
</scroll-view>
<van-popup show="{{ choiceShow }}" bind:close="onCloseTest">
<view class="choice_max">
<view class="choice_tltie">人员筛选</view>
<view class="choice_input">
<input placeholder="请输入劳务人员名称" model:value="{{search}}" bindinput="onInputSearch" />
</view>
<view class="choice_btn">
<view class="problem_submit_to_btn problem_submit_to_save" bindtap="onQueryData">立即查询</view>
</view>
<view class="choice_date">
<view class="choice_tltie">出勤时间</view>
<voucher-date class="choice_date_date" classStr="{{rdsDate}}" counts="3" placeholder="请选择劳务考勤日期" maxDate="{{maxDate}}" time="{{searchDate}}" bindchange="onInputTime"></voucher-date>
</view>
</view>
</van-popup>

View File

@ -0,0 +1,67 @@
.information-review-tab{
display: flex;
justify-content: space-around;
align-items: center;
height: 80rpx;
color: #92a1ca;
}
.information-review-tab .active{
color: #87e3fa;
padding-left: 40rpx;
background: url("https://szgcwx.jhncidg.com/staticFiles/icon/utilization.png") no-repeat left/35rpx;
}
.choice_max{
width: 500rpx;
background: #232a44;
padding:40rpx;
}
.choice_tltie{
text-align: center;
color: #00e3fe;
font-size: 28rpx;
padding: 0 0 20rpx 0;
}
.choice_input input{
border: 1px solid #00e3fe;
width: 100%;
height:60rpx;
border-radius: 50rpx;
font-size: 28rpx;
color: #00e3fe;
padding-left: 30rpx;
box-sizing: border-box;
}
.choice_btn{
margin-top: 20rpx;
width: 100% !important;
text-align: center;
}
.choice_date{
margin-top: 60rpx;
width: 100% !important;
}
.choice_date_date input{
width: 100% !important;
height:60rpx !important;
border-radius: 8rpx !important;
font-size: 28rpx !important;
color: #00e3fe !important;
padding-left: 15rpx !important;
box-sizing: border-box !important;
}
.summury{
margin-left: 35rpx;
}
.problem_submit_to_btn {
margin-left: auto;
margin-right: auto;
width: 100%;
border-radius: 50rpx;
height: 30rpx;
background-color: #3b426f;
color: #00e3fe;
}

View File

@ -0,0 +1,124 @@
import {
attendanceUser
} from '../../../../api/projectAttendance'
const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
id: "",
infoData: {},
projectName:"",
request: app.globalData.reqUrl,
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
let {
id
} = options
this.setData({
id,
projectName:app.globalData.projectName
})
this.getInfo();
},
/**
* 获取详情信息
*
*/
getInfo() {
attendanceUser(this.data.id).then(res => {
if (res.code == 200) {
this.setData({
infoData: res.data
})
}
});
},
/**
* 查看考勤信息
*/
onQueryData() {
wx.redirectTo({
url: '../../project_attendanceData/list/index?workerId='+this.data.infoData.workerId+"&id="+this.data.id
})
},
//展示图片
showImg: function (e) {
let path = e.currentTarget.dataset.set
let urls = [];
if (path.indexOf('http:')>-1 || path.indexOf('https:')>-1) {
urls.push(path);
} else {
urls.push(this.data.request + path);
}
debugger
wx.previewImage({
urls: urls,
current: urls[0]
})
},
returnToPage: function () {
/*关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面*/
wx.redirectTo({
url: '../list/index'
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

View File

@ -0,0 +1,7 @@
{
"usingComponents": {
"van-popup": "@vant/weapp/popup/index"
},
"navigationStyle":"custom",
"navigationBarTitleText": "形象进度详情"
}

View File

@ -0,0 +1,120 @@
<wxs module="format" src="/utils/format.wxs"></wxs>
<view class="header_title">
<view class="header_title_row">
<van-row>
<van-col span="4">
<view class="header_img" bindtap="returnToPage">
<image src="/images/left.png"></image>
</view>
</van-col>
<van-col span="15">
<view class="header_name">项目人员详情</view>
</van-col>
</van-row>
</view>
</view>
<view class="max_content">
<view class="inspect_overview_max">
<view class="inspect_overview">
<view class="module_title module_title_padding">
<view>{{projectName}}</view>
</view>
<view class="inspect_overview_list_max">
<view class="inspect_overview_list" wx:if="{{infoData.recentPhoto}}">
<van-row>
<van-col span="6"><text class="color_purple">人员近照</text></van-col>
<van-col span="18" class="color_blue">
<view class="in-img-div">
<image bindtap='showImg' data-set="{{infoData.recentPhoto}}" src="{{format.isHttpImg(infoData.recentPhoto)?infoData.recentPhoto:(request+infoData.recentPhoto)}}"></image>
</view>
</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_blue">人员姓名</text></van-col>
<van-col span="18" class="color_blue">{{infoData.name}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text>人员性别</text></van-col>
<van-col span="18">
<text wx:if="{{infoData.gender=='0'}}">男</text>
<text wx:if="{{infoData.gender=='1'}}">女</text>
</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text>人员民族</text></van-col>
<van-col span="18">
<text>{{infoData.ethnic}}</text>
</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text>出生日期</text></van-col>
<van-col span="18">{{format.birthDate(infoData.birthDate)}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text>联系电话</text></van-col>
<van-col span="18">{{infoData.phone}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple">籍贯地址</text></van-col>
<van-col span="18" class="color_purple">{{infoData.nativePlace}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text>人员类型</text></van-col>
<van-col span="18">
<text wx:if="{{infoData.companyTypeId=='1' || infoData.companyTypeId=='6'}}" class="code_label_2 code_label_green" style="padding: 5rpx 50rpx;font-size: 25rpx;">总包人员</text>
<text wx:if="{{infoData.companyTypeId=='0' || infoData.companyTypeId=='2' || infoData.companyTypeId=='3' || infoData.companyTypeId=='4' || infoData.companyTypeId=='5'}}" class="code_label_2 code_label_green" style="padding: 5rpx 50rpx;font-size: 25rpx;">劳务人员</text>
<text wx:if="{{infoData.companyTypeId=='8'}}" class="code_label_2 code_label_green" style="padding: 5rpx 50rpx;font-size: 25rpx;">监理人员</text>
</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text>单位名称</text></van-col>
<van-col span="18">{{infoData.degreeName}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text>班组名称</text></van-col>
<van-col span="18">{{infoData.groupName}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_blue">工种名称</text></van-col>
<van-col span="18" class="color_blue">{{infoData.workTypeName}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text>进场时间</text></van-col>
<van-col span="18">{{format.birthDate(infoData.enterDate)}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list" wx:if="{{infoData.exitDate}}">
<van-row>
<van-col span="6"><text>退场时间</text></van-col>
<van-col span="18">{{format.birthDate(infoData.exitDate)}}</van-col>
</van-row>
</view>
</view>
</view>
</view>
<view class="problem_submit_to">
<view class="problem_submit_to_btn problem_submit_to_save" bindtap="onQueryData">查 看 考 勤 信 息</view>
</view>
</view>

View File

@ -0,0 +1,33 @@
/* pageage/project_checking/info/index.wxss */
.in-img-max:after{
display:block;
clear:both;
content:"";
visibility:hidden;
height:0
}
.in-img-max{
width: auto;
zoom:1
}
.in-img-div{
position: relative;
margin: 0 8px 8px 0;
float: left;
}
.in-img-div image{
width: 180rpx;
height: 180rpx;
border-radius: 15rpx;
position: relative;
}
.problem_submit_to_btn {
padding: 20rpx 0;
width: 320rpx;
text-align: center;
border-radius: 10rpx;
background: #3e4148;
}
.problem_submit_to_save {
background: #3ea79d;
}

View File

@ -0,0 +1,265 @@
import {
groupUserByParams,
attendanceUserList
} from '../../../../api/projectAttendance'
const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
type: "1",
initData: {},
projectId: "",
companyTypeId: "101",
listData: [],
pageNum: 1,
pageSize: 50,
lastDataSize: 50,
list: [],
request: app.globalData.reqUrl,
nactive: 0,
labourTypeList: [{
name: "总包人员",
total: 0,
}, {
name: "监理人员",
total: 0,
}, {
name: "劳务人员",
total: 0,
}],
search: "",
choiceShow: false
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
let {
type
} = options
this.setData({
type,
typeName: type == "1" ? "在岗" : "离岗",
projectId: app.globalData.projectId,
initData: {
text: app.globalData.projectName,
id: app.globalData.projectId
},
search: "",
pageNum: 1,
pageSize: 50,
lastDataSize: 50,
listData: []
})
this.getListData();
},
// 事件委托
selected(e) {
let nav = e.target.dataset.set;
let companyTypeId = "";
if (nav == 0) {
companyTypeId = "101";
} else if (nav == 1) {
companyTypeId = "102";
} else {
companyTypeId = "103";
}
this.setData({
pageNum: 1,
pageSize: 50,
lastDataSize: 50,
listData: [],
companyTypeId,
nactive: nav
})
this.getListData();
},
/**
* 条件筛选
* @param {*} options
*/
onInputSearch: function (options) {
this.setData({
search: options.detail.value,
})
},
onQueryData: function(){
this.setData({
pageNum: 1,
pageSize: 50,
lastDataSize: 50,
listData: []
})
this.setData({
choiceShow:false
})
this.getListData();
},
/**
* 查看人员详情
*/
getInfo(e) {
let {
id
} = e.currentTarget.dataset.set
wx.redirectTo({
url: `../info/index?id=${id}`
})
},
/**
* 查询项目质量隐患排查数据
*/
getListData() {
//进入这里说明数据加载完毕
if (this.data.lastDataSize < this.data.pageSize) {
//app.toast("已经到底了,暂无可继续加载数据!")
return;
}
let params = {
"companyTypeId": this.data.companyTypeId,
"projectId": this.data.projectId,
"state": this.data.type == "1" ? 0 : 1,
pageNum: this.data.pageNum,
pageSize: this.data.pageSize,
name: this.data.search
}
this.initGroupAllByParams();
var that = this;
attendanceUserList(params).then(res => {
//这里处理this.data.lastDataSize=this.data.pageSize
if (that.data.list.length > 0 && res.rows.length > 0 && that.data.list[0].id == res.rows[0].id) {
that.setData({
lastDataSize: 0,
})
} else {
that.setData({
pageNum: that.data.pageNum + 1,
lastDataSize: res.rows.length,
list: res.rows,
listData: that.data.listData.concat(res.rows)
})
}
});
},
/**
* 初始化考勤信息
*/
initGroupAllByParams() {
let zb = 0;
let jl = 0;
let lw = 0;
groupUserByParams({
projectId: app.globalData.projectId,
name: this.data.search
}).then(res => {
if (res.data.length > 0) {
res.data.forEach(item => {
if (item.type == this.data.type) {
if (item.companyTypeId == 8) {
jl += item.total;
} else if (item.companyTypeId == 1 || item.companyTypeId == 6) {
zb += item.total;
} else {
lw += item.total;
}
}
});
}
this.setData({
"labourTypeList[0].total": zb,
"labourTypeList[1].total": jl,
"labourTypeList[2].total": lw,
})
});
},
returnToPage: function () {
wx.redirectTo({
url: '../../../../pages/xiangmugaikuang/index',
})
},
//项目切换 返回值
onProjectSelect(e) {
let projectId = e.detail.id;
let projectName = e.detail.text;
app.globalData.projectId = projectId;
app.globalData.projectName = projectName;
this.onLoad({});
},
onScrollToLower() {
console.log("滚动条到底了,开始加载新数据");
this.getListData();
},
choice() {
this.setData({
choiceShow: true
});
},
onCloseTest() {
this.setData({
choiceShow: false
});
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

View File

@ -0,0 +1,8 @@
{
"usingComponents": {
"van-overlay": "@vant/weapp/overlay/index" ,
"van-popup": "@vant/weapp/popup/index"
},
"navigationStyle":"custom",
"navigationBarTitleText": "劳务人员管理"
}

View File

@ -0,0 +1,71 @@
<wxs module="format" src="/utils/format.wxs"></wxs>
<view class="header_title">
<view class="header_title_row">
<van-row>
<van-col span="3">
<view class="header_img" bindtap="returnToPage">
<image src="/images/left.png"></image>
</view>
</van-col>
<van-col span="3">
<view class="header_img"><image src="{{!search?'https://szgcwx.jhncidg.com/staticFiles/icon/se.png':'https://szgcwx.jhncidg.com/staticFiles/icon/se_ac.png'}}" bindtap="choice"></image></view>
</van-col>
<van-col span="13">
<view class="header_name">{{typeName}}人员管理</view>
</van-col>
</van-row>
</view>
</view>
<scroll-view class="max_content_scroll" type="list" scroll-y bindscrolltolower="onScrollToLower">
<project-select init="{{initData}}" bindchange="onProjectSelect" id="projectSel"></project-select>
<view class="information-review-tab" bindtap="selected">
<view class="{{nactive===index?'active':''}}" data-set="{{index}}" wx:for="{{labourTypeList}}" wx:key="index">
{{item.name}}({{item.total}})
</view>
</view>
<view class="inspect_max_scroll">
<view class="inspect_for_scroll" v-if="{{ listData.length>0 }}" wx:for="{{listData}}" wx:key="index" data-set="{{item}}" bindtap="getInfo">
<view class="inspect_for_bgd">
<view class="inspect_list_title">
<view class="inspect_list_title_label inspect_list_title_width">
<view class="inspect_list_title_number">{{index < 9 ?'0'+(index+1):(index+1)}}</view>
<view class="module_title module_title_flex inspect_list_title_label">{{item.degreeName}}</view>
</view>
</view>
<view class="inspect_list_info">
<view class="inspect_list_info_details">
<view class="inspect_list_info_img">
<van-image width="120rpx" height="120rpx" fit="cover" src="{{format.isHttpImg(item.recentPhoto)?item.recentPhoto:(request+item.recentPhoto)}}" />
</view>
<view class="inspect_list_info_data">
<view class="inspect_list_info_data_prop color_blue">姓名:<text>{{item.name}}</text></view>
<view class="inspect_list_info_data_prop">班组:<text>{{item.groupName}}</text></view>
<view class="inspect_list_info_data_prop">工种:<text>{{item.workTypeName}}</text></view>
</view>
</view>
<view class="inspect_list_info_position">
<text class="color_purple">籍贯:{{item.nativePlace}}</text>
</view>
</view>
</view>
</view>
<view wx:if="{{listData.length==0}}">
<view style="padding-top: 70px;text-align: -webkit-center;">
<image src="https://szgcwx.jhncidg.com/staticFiles/nodata.png" style="width: 130px;height: 105px;"></image>
<view style="color: #a5abbb;">暂无数据</view>
</view>
</view>
</view>
</scroll-view>
<van-popup show="{{ choiceShow }}" bind:close="onCloseTest">
<view class="choice_max">
<view class="choice_tltie">人员筛选</view>
<view class="choice_input">
<input placeholder="请输入劳务人员名称" model:value="{{search}}" bindinput="onInputSearch"/>
</view>
<view class="choice_btn">
<view class="problem_submit_to_btn problem_submit_to_save" bindtap="onQueryData">立即查询</view>
</view>
</view>
</van-popup>

View File

@ -0,0 +1,48 @@
.information-review-tab{
display: flex;
justify-content: space-around;
align-items: center;
height: 80rpx;
color: #92a1ca;
}
.information-review-tab .active{
color: #87e3fa;
padding-left: 40rpx;
background: url("https://szgcwx.jhncidg.com/staticFiles/icon/utilization.png") no-repeat left/35rpx;
}
.choice_max{
width: 500rpx;
background: #232a44;
padding:40rpx;
}
.choice_tltie{
text-align: center;
color: #00e3fe;
font-size: 28rpx;
padding: 0 0 20rpx 0;
}
.choice_input input{
border: 1px solid #00e3fe;
width: 100%;
height:60rpx;
border-radius: 50rpx;
font-size: 28rpx;
color: #00e3fe;
padding-left: 30rpx;
box-sizing: border-box;
}
.choice_btn{
margin-top: 20rpx;
width: 100% !important;
text-align: center;
}
.problem_submit_to_btn {
margin-left: auto;
margin-right: auto;
width: 100%;
border-radius: 50rpx;
height: 30rpx;
background-color: #3b426f;
color: #00e3fe;
}

View File

@ -1,219 +0,0 @@
// pageage/safetyManagement/addSafetyInspect/index.js
const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
deptId:"",
projectId:"",
projectName:"",
loginName:"",
servicePersonnel:0,
supervisorPersonnel:0,
contractorPersonnel:0
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
let {projectId,projectName} = options
//获取缓存数据
wx.getStorage({
key: 'userinfo',
success:res=>{
this.setData({
projectId,
projectName,
deptId:res.data.deptId,
loginName:res.data.loginName
})
this.getLastData();
}
})
},
//获取数据
getLastData(){
let that = this
wx.request({
url: app.globalData.reqUrl+'/wechat/projectDeptWroks/list',
method:"get",
data:{
projectId:this.data.projectId,
deptId:this.data.deptId
},
success(res){
res = res.data
if(res.code == 200){
if(res.data){
this.setData({
servicePersonnel:res.data[0].servicePersonnel,
supervisorPersonnel:res.data[0].servicePersonnel,
contractorPersonnel:res.data[0].contractorPersonnel
});
}
}
}
})
},
//取消页面
cancelSaveView(){
/*关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面*/
wx.redirectTo({
url: '../list/index'
})
},
//保存
onSave(){
this.setData({
loadShow:true
})
let that = this
let {projectId,deptId,loginName,servicePersonnel,
supervisorPersonnel,
contractorPersonnel} = that.data;
//数据效验
if(projectId==""||loginName==""||deptId==""){
app.toast("数据异常,请刷新页面重试!")
that.setData({
loadShow:false
})
return;
}
if(servicePersonnel==""){
app.toast("请填写劳务人员数!")
that.setData({
loadShow:false
})
return;
}
if(supervisorPersonnel==""){
app.toast("请填写监理人员数!")
that.setData({
loadShow:false
})
return;
}
if(contractorPersonnel==""){
app.toast("请填写总包人员数!")
that.setData({
loadShow:false
});
return;
}
let params = {
projectId,
deptId,
servicePersonnel,
supervisorPersonnel,
contractorPersonnel,
createBy:loginName
}
wx.request({
url: app.globalData.reqUrl + "/wechat/projectDeptWroks/add",
method:"POST",
data:params,
header: {
"Username": loginName,
"Content-Type": "application/json"
},
success(res){
that.setData({
loadShow:false
})
res = res.data
if(res.code == 200){
if(res.data==-1){
app.toast("办理失败,当前单位已办理此类保险!")
}else{
app.toast("添加成功!")
setTimeout(()=>{
wx.redirectTo({
url: '../list/index',
})
},200)
}
}
}
})
},
servicePersonnelAction: function (options) {
let value = options.detail.value;
value = value.replace(/[^0-9]/g, ''); // 正则表达式替换非数字为空
this.data.servicePersonnel = value;
},
supervisorPersonnelAction: function (options) {
let value = options.detail.value;
value = value.replace(/[^0-9]/g, ''); // 正则表达式替换非数字为空
this.data.supervisorPersonnel = value;
},
contractorPersonnelAction: function (options) {
let value = options.detail.value;
value = value.replace(/[^0-9]/g, ''); // 正则表达式替换非数字为空
this.data.contractorPersonnel = value;
},
returnToPage: function () {
/*关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面*/
wx.redirectTo({
url: '../list/index',
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

View File

@ -1,6 +0,0 @@
{
"usingComponents": {
"van-overlay": "@vant/weapp/overlay/index"
},
"navigationStyle":"custom"
}

View File

@ -1,96 +0,0 @@
<!--pageage/safetyManagement/addSafetyInspect/index.wxml-->
<view class="header_title">
<view class="header_title_row">
<van-row>
<van-col span="4">
<view class="header_img" bindtap="returnToPage"><image src="/images/left.png"></image></view>
</van-col>
<van-col span="15">
<view class="header_name">新增在岗人员</view>
</van-col>
</van-row>
</view>
</view>
<view class="max_content">
<view class="inspect_info">
<view class="module_title module_title_flex">
<view>{{projectName}}</view>
</view>
<view class="inspect_info_list">
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">劳务人员</view>
<view class="inspect_info_content">
<input placeholder="请填写劳务人员" placeholder-style="color:#6777aa;" class="inspect_input_fill_in" bindinput="servicePersonnelAction" maxlength="20" value="{{servicePersonnel}}"/>
</view>
</view>
<view class="inspect_info_list">
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">监理人员</view>
<view class="inspect_info_content">
<input placeholder="请填写监理人员" placeholder-style="color:#6777aa;" class="inspect_input_fill_in" bindinput="supervisorPersonnelAction" maxlength="20" value="{{supervisorPersonnel}}"/>
</view>
</view>
<view class="inspect_info_list">
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">总包人员</view>
<view class="inspect_info_content">
<input placeholder="请填写总包人员" placeholder-style="color:#6777aa;" class="inspect_input_fill_in" bindinput="contractorPersonnelAction" maxlength="20" value="{{contractorPersonnel}}"/>
</view>
</view>
</view>
<view class="problem_submit_to">
<view class="problem_submit_to_btn" bindtap="cancelSaveView">取消</view>
<view class="problem_submit_to_btn problem_submit_to_save" bindtap="onSave">保存</view>
</view>
</view>
<van-overlay show="{{loadShow}}">
<view class="gif">
<image src="/images/loding2.gif"></image>
<view>数据加载中!请稍后...</view>
</view>
</van-overlay>

View File

@ -1,36 +0,0 @@
/* pageage/safetyManagement/addSafetyInspect/index.wxss */
.van-popup{
background: none !important;
}
.van-image__img{
border-radius: 10rpx !important;
}
.radio_custom_class{
padding: 10rpx 100rpx 10rpx 0;
}
.radio_label_class{
color: #ffffff !important;
}
.max_tab_name{
padding: 0 40rpx;
font-size:30rpx;
height: 460rpx;
overflow: auto;
margin-top: 20rpx;
text-align: center;
}
.van-popup.van-popup--bottom{
background: #232a44;
}
.van-popup {
background-color: var(--popup-background-color,#232a44) !important;
}
.font_color{
padding: 15rpx 0;
color: #157dd2;
}
.active{
font-size:30rpx;
font-weight: 600;
color: #14feff
}

View File

@ -1,161 +0,0 @@
// pageage/safetyManagement/securityCheckGR/index.js
const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
deptId:"",
loginName:"",
userName:"",
projectId:"",
projectData:{},
projectNameArgs:"",
initData: {},
show:false,
listData:[],
request:app.globalData.reqUrl
},
onClose(){
this.setData({ show: false });
},
showPopup() {
this.setData({ show: true });
},
skipAdd(){
wx.redirectTo({
url: `../add/index?projectId=${this.data.initData.id}&projectName=${this.data.initData.text}`,
})
},
getInfo(e){
let {id} = e.currentTarget.dataset.set;
if(!id){
app.toast("当前合同未办理,不能查看详情!");
return;
}
wx.redirectTo({
url: `../info/index?id=${id}`,
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
//获取缓存数据
wx.getStorage({
key: 'userinfo',
success:res=>{
this.setData({
deptId:res.data.deptId,
loginName:res.data.loginName,
userName:res.data.userName,
projectId:app.globalData.projectId,
projectNameArgs:app.globalData.projectName,
minRoleId:res.data.minRoleId,
initData:{text:app.globalData.projectName,id:app.globalData.projectId}
})
this.getListData(app.globalData.projectId,res.data.deptId,res.data.minRoleId);
}
})
},
/**
* 查询项目特种人员数据
*/
getListData(projectId,deptId,minRoleId) {
var that = this;
//判断角色,
if(minRoleId==2||minRoleId==3||minRoleId==4){
deptId=0;
}
wx.request({
url: app.globalData.reqUrl + '/wechat/projectDeptWroks/list',
data: {
"deptId":deptId,
"projectId": projectId
},
method: "get",
success: function (res) {
that.setData({
listData:res.data.data
})
}
})
},
returnToPage: function () {
/*关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面*/
if(wx.getStorageSync('nav-menu')=="gd"){
wx.redirectTo({
url: '../../../pages/gengduogongneng/index',
})
}else{
wx.redirectTo({
url: '../../../pages/safety_manage/index',
})
}
},
//项目切换 返回值
onProjectSelect(e){
let projectId = e.detail.id;
let projectName = e.detail.text;
app.globalData.projectId = projectId;
app.globalData.projectName = projectName;
this.onLoad();
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

View File

@ -1,7 +0,0 @@
{
"usingComponents": {
"van-overlay": "@vant/weapp/overlay/index" ,
"van-popup": "@vant/weapp/popup/index"
},
"navigationStyle":"custom"
}

View File

@ -1,62 +0,0 @@
<view class="header_title">
<view class="header_title_row">
<van-row>
<van-col span="4">
<view class="header_img" bindtap="returnToPage"><image src="/images/left.png"></image></view>
</van-col>
<van-col span="15">
<view class="header_name">在岗人员管理</view>
</van-col>
</van-row>
</view>
</view>
<view class="max_content">
<project-select init="{{initData}}" bindchange="onProjectSelect"></project-select>
<view class="inspect_max">
<view class="inspect_list">
<view class="inspect_for" wx:for="{{listData}}" wx:key="index" bindtap="getInfo">
<view class="inspect_for_bgd">
<view class="inspect_list_title">
<view class="inspect_list_title_label inspect_list_title_width">
<view class="inspect_list_title_number">{{index < 9 ?'0'+(index+1):(index+1)}}</view>
<view class="module_title module_title_flex inspect_list_title_text">{{item.deptName}}</view>
</view>
</view>
<view class="inspect_list_info">
<view class="inspect_list_info_details">
<view class="inspect_list_info_data">
<view class="inspect_list_info_data_prop safety_issue_number" style="color: aqua;">劳务人员:{{item.servicePersonnel}}
</view>
<view class="inspect_list_info_data_prop safety_issue_number color_blue">监理人员:{{item.supervisorPersonnel}}
</view>
<view class="inspect_list_info_data_prop safety_issue_number color_orange">总包人员:{{item.contractorPersonnel}}
</view>
<view class="inspect_list_info_data_prop">提交用户:{{item.createBy}}</view>
<view class="inspect_list_info_data_prop">提交时间:{{item.createTime}}</view>
</view>
</view>
</view>
</view>
</view>
</view>
<view wx:if="{{listData.length==0}}">
<view style="padding-top: 70px;text-align: -webkit-center;">
<image src="https://szgcwx.jhncidg.com/staticFiles/nodata.png" style="width: 130px;height: 105px;"></image>
<view style="color: #a5abbb;">暂无数据</view>
</view>
</view>
</view>
<view class="inspect_add_to" bindtap="skipAdd">
<view style="padding-top: 22rpx;">
<image src="/images/new_add.png"></image>
<view>变更</view>
</view>
</view></view>

View File

@ -1 +0,0 @@
/* pageage/project_checking_list/project_checking_list.wxss */

View File

@ -498,7 +498,7 @@ Page({
let list = [];
if (e.detail.id == 6) {
this.data.infoTypeList.forEach(item => {
if (item.remark == "gjgc") {
if (item.remark == "gjgc" || item.remark == "all") {
list.push({
"id": item.dictValue,
"text": item.dictLabel
@ -507,7 +507,7 @@ Page({
})
} else {
this.data.infoTypeList.forEach(item => {
if (!item.remark) {
if (!item.remark || item.remark == "all") {
list.push({
"id": item.dictValue,
"text": item.dictLabel

View File

@ -543,7 +543,7 @@ Page({
let list = [];
if (e.detail.id == 6) {
this.data.infoTypeList.forEach(item => {
if (item.remark == "gjgc") {
if (item.remark == "gjgc" || item.remark == "all") {
list.push({
"id": item.dictValue,
"text": item.dictLabel
@ -552,7 +552,7 @@ Page({
})
} else {
this.data.infoTypeList.forEach(item => {
if (!item.remark) {
if (!item.remark || item.remark == "all") {
list.push({
"id": item.dictValue,
"text": item.dictLabel

View File

@ -6,24 +6,40 @@ Page({
* 页面的初始数据
*/
data: {
maxDate:new Date(2088,1,1).getTime(),
minDate:new Date().getTime()+(3600*48*1000),
projectId:"",
projectName:"",
loginName:"",
userName:"",
rectifierData:[],
loadShow:false,
showHis:false,
inspectInfoData:[
{
image_upload:[]
}
],
lordSent:"",
lordSentUser:"",
flowNodes:[{text:'开始'},{text:'提交隐患'},{text:'隐患整改'},{text:'隐患复检'},{text:'结束'}],
active: 0
maxDate: new Date(2088, 1, 1).getTime(),
minDate: new Date().getTime() + (3600 * 48 * 1000),
projectId: "",
projectName: "",
loginName: "",
userName: "",
rectifierData: [],
loadShow: false,
showHis: false,
inspectInfoData: [{
image_upload: []
}],
lordSent: "",
lordSentUser: "",
flowNodes: [{
text: '开始'
}, {
text: '提交隐患'
}, {
text: '隐患整改'
}, {
text: '隐患复检'
}, {
text: '结束'
}],
active: 0,
problemType: "1",
problemTypeList: [{
id: 1,
text: '常规检查'
}, {
id: 2,
text: '专项检查'
}]
},
/**
@ -32,65 +48,65 @@ Page({
onLoad(options) {
//获取缓存数据
wx.getStorage({
key: 'userinfo',
success:res=>{
this.setData({
projectId:app.globalData.projectId,
projectName:app.globalData.projectName,
loginName:res.data.loginName,
userName:res.data.nickName
})
this.getAllProjectUserData();
this.getHisInfo();
}
})
key: 'userinfo',
success: res => {
this.setData({
projectId: app.globalData.projectId,
projectName: app.globalData.projectName,
loginName: res.data.loginName,
userName: res.data.nickName
})
this.getAllProjectUserData();
this.getHisInfo();
}
})
},
//查询项目人员数据
getAllProjectUserData(){
getAllProjectUserData() {
let that = this
wx.request({
url: app.globalData.reqUrl+'/wechat/projectuserinfo/selectProjectUnitUser',
method:"get",
data:{
projectId:that.data.projectId,
loginName:that.data.loginName
url: app.globalData.reqUrl + '/wechat/projectuserinfo/selectProjectUnitUser',
method: "get",
data: {
projectId: that.data.projectId,
loginName: that.data.loginName
},
header:{
'content-type': 'application/x-www-form-urlencoded'
header: {
'content-type': 'application/x-www-form-urlencoded'
},
success(res){
success(res) {
res = res.data
if(res.code == 200){
if (res.code == 200) {
that.setData({
rectifierData:res.data
rectifierData: res.data
})
}
}
})
},
getHisInfo(){
getHisInfo() {
//这里查询当前登录人上次提交隐患,自动填充整改人,复检人,抄送人
let that = this
wx.request({
url: app.globalData.reqUrl+'/wechat/projectProblemmodify/findDraftLastDataByParams',
method:"get",
data:{
projectId:that.data.projectId,
createUser:that.data.loginName,
infoType:1
url: app.globalData.reqUrl + '/wechat/projectProblemmodify/findDraftLastDataByParams',
method: "get",
data: {
projectId: that.data.projectId,
createUser: that.data.loginName,
infoType: 1
},
header:{
'content-type': 'application/x-www-form-urlencoded'
header: {
'content-type': 'application/x-www-form-urlencoded'
},
success(res){
success(res) {
res = res.data
if(res.code == 200 && res.data){
if (res.code == 200 && res.data) {
that.setData({
showHis:true,
lordSent:res.data.lordSent,
lordSentUser:res.data.lordSentUser
showHis: true,
lordSent: res.data.lordSent,
lordSentUser: res.data.lordSentUser
})
}
}
@ -98,102 +114,118 @@ Page({
},
// list 上传图片
onImagesArr(e){
onImagesArr(e) {
var index = e.currentTarget.dataset.index
var data = this.data.inspectInfoData
data[index].image_upload = e.detail
this.setData({
inspectInfoData:data
inspectInfoData: data
})
},
//添加整改人
onAddLordSent(e){
if(e.detail.length>0){
onAddLordSent(e) {
if (e.detail.length > 0) {
this.setData({
lordSent:e.detail[0].userName,
lordSentUser:e.detail[0].phoneNumber
lordSent: e.detail[0].userName,
lordSentUser: e.detail[0].phoneNumber
})
}
},
//取消页面
cancelSaveView(){
cancelSaveView() {
this.returnToPage()
},
//保存
onProblemSubmitSave(){
onProblemSubmitSave() {
this.setData({
loadShow:true
loadShow: true
})
let that = this
let {projectId,projectName,lordSent,lordSentUser,loginName,inspectInfoData} = that.data;
let {
projectId,
projectName,
problemType,
lordSent,
lordSentUser,
loginName,
inspectInfoData
} = that.data;
//数据效验
if(projectId==""||loginName==""){
if (projectId == "" || loginName == "") {
app.toast("数据异常,请刷新页面重试!")
that.setData({
loadShow:false
loadShow: false
})
return;
}
if(lordSent==""||lordSentUser==""){
if (problemType == "") {
app.toast("请选择问题类型!")
that.setData({
loadShow: false
})
return;
}
if (lordSent == "" || lordSentUser == "") {
app.toast("请选择整改人!")
that.setData({
loadShow:false
loadShow: false
})
return;
}
let fileUrls = [];
inspectInfoData.forEach(async (item)=>{
let beforeCheckUrl = [];
item.image_upload.forEach(async (it)=>{
let uploadUrl = app.globalData.uploadUrl+'/common/upload'
inspectInfoData.forEach(async (item) => {
let beforeCheckUrl = [];
item.image_upload.forEach(async (it) => {
let uploadUrl = app.globalData.uploadUrl + '/common/upload'
let name = "file";
//这里复杂的图片上传,改为同步上传,因为小程序只能上传一张图片
let obj = await that.syncUploadImage(uploadUrl,it,name);
let obj = await that.syncUploadImage(uploadUrl, it, name);
beforeCheckUrl.push(obj.data.fileName);
if(beforeCheckUrl.length >= item.image_upload.length){
if (beforeCheckUrl.length >= item.image_upload.length) {
fileUrls.push(beforeCheckUrl);
}
//验证图片上传完毕
if(fileUrls.length >= inspectInfoData.length){
//验证图片上传完毕
if (fileUrls.length >= inspectInfoData.length) {
let params = {
projectId,
infoType:"1",
problemArea:projectName,
infoType: "1",
problemArea: projectName,
problemType,
lordSent,
lordSentUser,
checkState:0,
fileUrls:fileUrls,
createUser:loginName
checkState: 0,
fileUrls: fileUrls,
createUser: loginName
}
wx.request({
url: app.globalData.reqUrl + '/wechat/projectProblemmodify/addQualityDraft',
method:"POST",
data:params,
method: "POST",
data: params,
header: {
"Username": loginName,
"Content-Type": "application/json"
},
success(res){
success(res) {
that.setData({
loadShow:false
loadShow: false
})
res = res.data
if(res.code == 200){
if (res.code == 200) {
app.toast("添加成功!")
setTimeout(()=>{
if(wx.getStorageSync('nav-menu')=="list"){
setTimeout(() => {
if (wx.getStorageSync('nav-menu') == "list") {
wx.redirectTo({
url: '../list/index',
})
}else{
} else {
wx.redirectTo({
url: '../../../../pages/quality_manage/index',
})
}
},200);
}, 200);
}
}
})
@ -205,74 +237,84 @@ Page({
/**
* 这里考虑上传图片异步问题封装为同步
*/
syncUploadImage(url,uploadFile,name) {
syncUploadImage(url, uploadFile, name) {
return new Promise((resolve, reject) => {
wx.uploadFile({
url, // 上传的服务器接口地址
filePath: uploadFile,
header: {
"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8"
},
name, //上传的所需字段,后端提供
formData: { user: 'test' },
success: (res) => {
// 上传完成操作
const data = JSON.parse(res.data)
resolve({
data: data
})
},
fail: (err) => {
//上传失败修改pedding为reject
console.log("访问接口失败", err);
wx.showToast({
title: "网络出错,上传失败",
icon: 'none',
duration: 1000
});
reject(err)
}
url, // 上传的服务器接口地址
filePath: uploadFile,
header: {
"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8"
},
name, //上传的所需字段,后端提供
formData: {
user: 'test'
},
success: (res) => {
// 上传完成操作
const data = JSON.parse(res.data)
resolve({
data: data
})
},
fail: (err) => {
//上传失败修改pedding为reject
console.log("访问接口失败", err);
wx.showToast({
title: "网络出错,上传失败",
icon: 'none',
duration: 1000
});
reject(err)
}
});
})
},
returnToPage: function () {
/*关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面*/
if(wx.getStorageSync('nav-menu')=="list"){
wx.redirectTo({
url: '../list/index',
/**
* 选择问题类型
* @param {*} e
*/
onSelectProblemType(e) {
this.setData({
problemType: e.detail.id,
})
}else{
wx.redirectTo({
url: '../../../../pages/quality_manage/index',
})
}
},
},
returnToPage: function () {
/*关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面*/
if (wx.getStorageSync('nav-menu') == "list") {
wx.redirectTo({
url: '../list/index',
})
} else {
wx.redirectTo({
url: '../../../../pages/quality_manage/index',
})
}
},
//新增问题
onNewIssues(){
onNewIssues() {
var data = this.data.inspectInfoData
if(data.length==5){
if (data.length == 5) {
app.toast("一次最多只能提交5个问题!");
return false;
}
data.push(
{
image_upload:[]
}
)
data.push({
image_upload: []
})
this.setData({
inspectInfoData:data
inspectInfoData: data
})
},
//删除
onNewIssuesDelete(e){
onNewIssuesDelete(e) {
var index = e.currentTarget.dataset.index
var data = this.data.inspectInfoData
data.splice(index, 1) 
data.splice(index, 1)
this.setData({
inspectInfoData:data
inspectInfoData: data
})
},

View File

@ -17,6 +17,12 @@
<view class="module_title_2 module_title_flex">
<view>{{projectName}}</view>
</view>
<view class="inspect_info_list">
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">问题类型</view>
<view class="inspect_info_content">
<voucher-select columns="{{problemTypeList}}" placeholder="请选择问题类型" bindchange="onSelectProblemType" selectValue="{{problemType}}"></voucher-select>
</view>
</view>
<view class="inspect_info_list">
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">整改人员</view>
<view class="inspect_info_content">

View File

@ -78,19 +78,32 @@
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple">整改人</text></van-col>
<van-col span="18" class="color_blue">{{infoData.lordSent}}</van-col>
<van-col span="18" class="color_blue">
{{infoData.lordSent}}
<text class="code_label_2 code_label_green" wx:if="{{infoData.zgDeptType=='1'}}" style="padding: 5rpx 50rpx;font-size: 25rpx;">集团公司</text>
<text class="code_label_2 code_label_green" wx:if="{{infoData.zgDeptType=='11'}}" style="padding: 5rpx 50rpx;font-size: 25rpx;">子公司</text>
<text class="code_label_2 code_label_green" wx:if="{{infoData.zgDeptType=='2'}}" style="padding: 5rpx 50rpx;font-size: 25rpx;">总包单位</text>
<text class="code_label_2 code_label_green" wx:if="{{infoData.zgDeptType=='3'}}" style="padding: 5rpx 50rpx;font-size: 25rpx;">分包单位</text>
<text class="code_label_2 code_label_green" wx:if="{{infoData.zgDeptType=='4'}}" style="padding: 5rpx 50rpx;font-size: 25rpx;">监理单位</text>
</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple">抄送人</text></van-col>
<van-col span="18">{{infoData.copySend}}</van-col>
<van-col span="18"> {{infoData.copySend}}</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple">复检人</text></van-col>
<van-col span="18">{{infoData.recheckSend}}</van-col>
<van-col span="18">{{infoData.recheckSend}}
<text class="code_label_2 code_label_green" wx:if="{{infoData.fjDeptType=='1'}}" style="padding: 5rpx 50rpx;font-size: 25rpx;">集团公司</text>
<text class="code_label_2 code_label_green" wx:if="{{infoData.fjDeptType=='11'}}" style="padding: 5rpx 50rpx;font-size: 25rpx;">子公司</text>
<text class="code_label_2 code_label_green" wx:if="{{infoData.fjDeptType=='2'}}" style="padding: 5rpx 50rpx;font-size: 25rpx;">总包单位</text>
<text class="code_label_2 code_label_green" wx:if="{{infoData.fjDeptType=='3'}}" style="padding: 5rpx 50rpx;font-size: 25rpx;">分包单位</text>
<text class="code_label_2 code_label_green" wx:if="{{infoData.fjDeptType=='4'}}" style="padding: 5rpx 50rpx;font-size: 25rpx;">监理单位</text>
</van-col>
</van-row>
</view>
<view class="inspect_overview_list">

View File

@ -23,7 +23,15 @@ Page({
lordSent:"",
lordSentUser:"",
flowNodes:[{text:'开始'},{text:'提交隐患'},{text:'隐患整改'},{text:'隐患复检'},{text:'结束'}],
active: 0
active: 0,
problemType: "1",
problemTypeList: [{
id: 1,
text: '常规检查'
}, {
id: 2,
text: '专项检查'
}]
},
/**
@ -128,7 +136,7 @@ Page({
loadShow:true
})
let that = this
let {projectId,projectName,lordSent,lordSentUser,loginName,inspectInfoData} = that.data;
let {projectId,projectName,problemType,lordSent,lordSentUser,loginName,inspectInfoData} = that.data;
//数据效验
if(projectId==""||loginName==""){
app.toast("数据异常,请刷新页面重试!")
@ -137,6 +145,13 @@ Page({
})
return;
}
if (problemType == "") {
app.toast("请选择问题类型!")
that.setData({
loadShow: false
})
return;
}
if(lordSent==""||lordSentUser==""){
app.toast("请选择整改人!")
that.setData({
@ -162,6 +177,7 @@ Page({
projectId,
infoType:"0",
problemArea:projectName,
problemType,
lordSent,
lordSentUser,
checkState:0,
@ -249,6 +265,16 @@ Page({
}
},
/**
* 选择问题类型
* @param {*} e
*/
onSelectProblemType(e) {
this.setData({
problemType: e.detail.id,
})
},
//新增问题
onNewIssues(){
var data = this.data.inspectInfoData

View File

@ -17,6 +17,12 @@
<view class="module_title_2 module_title_flex">
<view>{{projectName}}</view>
</view>
<view class="inspect_info_list">
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">问题类型</view>
<view class="inspect_info_content">
<voucher-select columns="{{problemTypeList}}" placeholder="请选择问题类型" bindchange="onSelectProblemType" selectValue="{{problemType}}"></voucher-select>
</view>
</view>
<view class="inspect_info_list">
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">整改人员</view>
<view class="inspect_info_content">

View File

@ -78,7 +78,13 @@
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple">整改人</text></van-col>
<van-col span="18" class="color_blue">{{infoData.lordSent}}</van-col>
<van-col span="18" class="color_blue">{{infoData.lordSent}}
<text class="code_label_2 code_label_green" wx:if="{{infoData.zgDeptType=='1'}}" style="padding: 5rpx 50rpx;font-size: 25rpx;">集团公司</text>
<text class="code_label_2 code_label_green" wx:if="{{infoData.zgDeptType=='11'}}" style="padding: 5rpx 50rpx;font-size: 25rpx;">子公司</text>
<text class="code_label_2 code_label_green" wx:if="{{infoData.zgDeptType=='2'}}" style="padding: 5rpx 50rpx;font-size: 25rpx;">总包单位</text>
<text class="code_label_2 code_label_green" wx:if="{{infoData.zgDeptType=='3'}}" style="padding: 5rpx 50rpx;font-size: 25rpx;">分包单位</text>
<text class="code_label_2 code_label_green" wx:if="{{infoData.zgDeptType=='4'}}" style="padding: 5rpx 50rpx;font-size: 25rpx;">监理单位</text>
</van-col>
</van-row>
</view>
<view class="inspect_overview_list">
@ -90,7 +96,13 @@
<view class="inspect_overview_list">
<van-row>
<van-col span="6"><text class="color_purple">复检人</text></van-col>
<van-col span="18">{{infoData.recheckSend}}</van-col>
<van-col span="18">{{infoData.recheckSend}}
<text class="code_label_2 code_label_green" wx:if="{{infoData.fjDeptType=='1'}}" style="padding: 5rpx 50rpx;font-size: 25rpx;">集团公司</text>
<text class="code_label_2 code_label_green" wx:if="{{infoData.fjDeptType=='11'}}" style="padding: 5rpx 50rpx;font-size: 25rpx;">子公司</text>
<text class="code_label_2 code_label_green" wx:if="{{infoData.fjDeptType=='2'}}" style="padding: 5rpx 50rpx;font-size: 25rpx;">总包单位</text>
<text class="code_label_2 code_label_green" wx:if="{{infoData.fjDeptType=='3'}}" style="padding: 5rpx 50rpx;font-size: 25rpx;">分包单位</text>
<text class="code_label_2 code_label_green" wx:if="{{infoData.fjDeptType=='4'}}" style="padding: 5rpx 50rpx;font-size: 25rpx;">监理单位</text>
</van-col>
</van-row>
</view>
<view class="inspect_overview_list">

View File

@ -135,7 +135,7 @@
<view class="inspect_info_list">
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">整改后图片</view>
<view class="problem_list_info_con">
<file-uploader bindimages="onImagesArr"></file-uploader>
<file-uploader bindimages="onImagesArr"></file-uploader>
</view>
</view>
</view>

View File

@ -38,13 +38,13 @@ Page({
count: 0,
}, {
id: 4,
name: '设备管理标准',
icon: config.baseUrl + '/staticFiles/img/sbglbzh.png',
name: '文明施工标准',
icon: config.baseUrl + '/staticFiles/img/wmsgbzh.png',
count: 0,
}, {
id: 5,
name: '文明施工标准',
icon: config.baseUrl + '/staticFiles/img/wmsgbzh.png',
name: '设备管理标准',
icon: config.baseUrl + '/staticFiles/img/sbglbzh.png',
count: 0,
}, {
id: 6,

View File

@ -30,6 +30,10 @@ Component({
currentDate:{
type:Number,
value:new Date().getTime()
},
classStr:{
type:String,
value:''
}
},
/**数据监听 */

View File

@ -1,8 +1,8 @@
<!--pages/components/voucher-select/index.wxml-->
<view class="voucher_select_max" bindtap="showPopup" style="width: {{width}};">
<view class="voucher_select_max {{classStr}}" bindtap="showPopup" style="width: {{width}};">
<view class="voucher_select_min">
<input class="celect_frame_min" placeholder="{{placeholder}}" placeholder-style="color:#6777aa;" value="{{value}}" disabled="true"/>
<input class="celect_frame_min" placeholder="{{placeholder}}" placeholder-style="{{classStr?'color:':'color:#6777aa'}};" value="{{value}}" disabled="true"/>
</view>
<view class="voucher_select_icon">
<image src="/images/web_select_date.png"></image>

View File

@ -51,11 +51,27 @@
background: none !important;
color: #546696 !important;
}
.rdsDate{
padding: 0rpx !important;
}
.rdsDate .voucher_select_min{
width:100% !important;
padding-left: 0rpx !important;
}
.rdsDate .voucher_select_icon{
position:absolute !important;
right: 65rpx !important;
}
.rdsDate .voucher_select_min input{
width: 100% !important;
height:60rpx !important;
border-radius: 50rpx !important;
font-size: 28rpx !important;
color: #00e3fe !important;
border: 1px solid #00e3fe;
box-sizing: border-box !important;
padding-left: 32rpx !important;
}

View File

@ -64,11 +64,6 @@ Page({
name: '专项验收审批',
icon: config.baseUrl + '/staticFiles/img/zxyssp.png',
todoDB:0,
}, {
id: 9,
name: '分包资质审批',
icon: config.baseUrl + '/staticFiles/img/tzl.png',
todoDB:0,
}
],
},

View File

@ -71,7 +71,7 @@
</view>
<view class="inspect_list_info">
<view class="inspect_list_info_data_prop color_purple">项目名称:{{item.businessKeyName}}</view>
<view class="inspect_list_info_data_prop color_blue">审批事项{{item.procDefName}}</view>
<view class="inspect_list_info_data_prop color_blue">申请类型{{item.procDefName}}</view>
<view class="inspect_list_info_data_prop color_purple">接收时间:{{item.createTime}}</view>
<view class="inspect_list_info_data_prop">申请用户:{{item.startUserName}}</view>
<view class="inspect_list_info_data_prop">申请单位:{{item.startDeptName}}</view>

View File

@ -116,7 +116,6 @@
<view class="inspect_info_list" style="width: 100%;" wx:if="{{isFiles}}">
<view class="inspect_info_title module_title_flex" style="padding: 20rpx 0 10rpx;">审批内容 [仅可上传PDF文件]
<view class="module_see_info_switct" bindtap="switchFiles">
<van-icon name="" />
<van-icon name="wap-nav" /> 从相册上传图片
</view>
</view>

View File

@ -118,7 +118,7 @@ Page({
this.getTrainList(projectId, 0);
this.getSecurityCheck(projectId);
this.getSpecial(projectId);
this.getDeptWorks(projectId);
//this.getDeptWorks(projectId);
this.getPojectInsurance(projectId);
//this.getTraining(projectId);
this.getTrainList(projectId, 1);
@ -266,7 +266,7 @@ Page({
*/
getDeptWorks(projectId) {
wx.request({
url: app.globalData.reqUrl + '/wechat/projectDeptWroks/findSumByProjectId',
url: app.globalData.reqUrl + '/wechat/attendance/findSumByProjectId',
data: {
projectId: projectId
},

View File

@ -117,7 +117,7 @@
</view>
</view>
<view class="module_max">
<view class="module_max" wx:if="{{false}}">
<view class="module_min">
<view class="module_title module_title_flex">
<view>在岗人员</view>

View File

@ -1,8 +1,10 @@
import * as echarts from '../../ec-canvas/echarts';
import {
groupAllByParams,
findGroupAllByDays
} from '../../api/projectAttendance'
const app = getApp();
//加载视频监控饼图
let datas_1 = [];
let formatNumber_1 = function (num) {
@ -300,7 +302,63 @@ Page({
initData: {},
todoDb: 0,
approveDb: 0,
aq:0,
aq: 0,
nactive: 0,
labourData: [{
name: "总包人员",
total: 0,
unit: "人",
yesMonitor: 180
},
{
name: "监理人员",
yesMonitor: 0,
total: 0,
unit: "人"
},
{
name: "劳务人员",
yesMonitor: 0,
total: 0,
unit: "人"
},
],
labourDataList: [],
labourImg: "https://szgcwx.jhncidg.com/staticFiles/icon/zgry.png",
labourName: "在岗人员",
labourTotal: 0,
labourTypeList: [{
name: "在岗人员",
total: 0,
img: "https://szgcwx.jhncidg.com/staticFiles/icon/zgry.png"
}, {
name: "离岗人员",
total: 0,
img: "https://szgcwx.jhncidg.com/staticFiles/icon/rylg.png"
}, {
name: "今日出勤",
total: 0,
img: "https://szgcwx.jhncidg.com/staticFiles/icon/dw.png"
}],
animation: true,
animationData: {},
labourDatas:{
unit : '人',
legend:['出勤人数', '当前在岗'],
color:['#2e6ed0','#fb9300'],
Xdata :['01-01', '01-02', '01-03', '01-04', '01-05', '01-06', '01-07'],
Ydata:[[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]]
},
switchChart:false,
},
// 事件委托
selected(e) {
this.setData({
nactive: e.target.dataset.set,
labourImg: this.data.labourTypeList[e.target.dataset.set].img,
})
this.initDeptWroksCharts();
},
//项目切换 返回值
@ -311,6 +369,7 @@ Page({
app.globalData.projectId = projectId;
app.globalData.projectName = projectName;
this.setData({
switchChart:true,
projectId: projectId,
projectName: projectName
})
@ -386,6 +445,7 @@ Page({
onLoad: function (options) {
this.onClickShow();
this.setData({
labourImg: this.data.labourTypeList[this.data.nactive].img,
activeName: ["1"],
});
var that = this;
@ -429,12 +489,103 @@ Page({
//this.getMachineryList(app.globalData.projectId);
//视频的数据
//this.getVideoList(app.globalData.projectId);
this.initAnimationData();
this.initProjectDeptWroks();
this.initLabourDatas();
},
/**
* 初始化动画
*/
initAnimationData() {
var animation = wx.createAnimation({
duration: 1000,
timingFunction: 'linear',
})
this.animation = animation;
if (this.data.animation) {
animation.translateY(-8).step();
} else {
animation.translateY(8).step();
}
this.setData({
animation: this.data.animation ? false : true,
animationData: animation.export()
})
setTimeout(() => {
this.initAnimationData();
}, 1200)
},
/**
* 初始化考勤信息
*/
initProjectDeptWroks() {
let zg = 0;
let lg = 0;
let cq = 0;
groupAllByParams({
projectId: app.globalData.projectId
}).then(res => {
if (res.data.length > 0) {
res.data.forEach(item => {
if (item.type == "1") {
zg += item.total;
} else if (item.type == "2") {
lg += item.total;
} else {
cq += item.total;
}
});
}
this.setData({
"labourTypeList[0].total": zg,
"labourTypeList[1].total": lg,
"labourTypeList[2].total": cq,
labourTotal: zg,
labourDataList: res.data || []
})
this.initDeptWroksCharts();
});
},
/**
* 初始化统计图表
*/
initDeptWroksCharts() {
let labourDataList = this.data.labourDataList;
let naValue = this.data.nactive + 1;
if (labourDataList.length > 0) {
let zb = 0;
let jl = 0;
let lw = 0;
labourDataList.forEach(item => {
if (item.type == naValue) {
if (item.companyTypeId == 8) {
jl += item.total;
} else if (item.companyTypeId == 1 || item.companyTypeId == 6) {
zb += item.total;
} else {
lw += item.total;
}
}
});
this.setData({
"labourData[0].total": zb,
"labourData[0].yesMonitor": zb,
"labourData[1].total": jl,
"labourData[1].yesMonitor": jl,
"labourData[2].total": lw,
"labourData[2].yesMonitor": lw,
labourTotal: this.data.labourTypeList[this.data.nactive].total
})
}
},
/**
* 查询公众号消息授权
*/
reUserOpenMsgId(){
reUserOpenMsgId() {
let userInfos = this.selectComponent("#userInfos");
userInfos.loadUserInfo();
},
@ -447,6 +598,44 @@ Page({
});
},
/**
* 初始化曲线图表
*/
initLabourDatas(){
findGroupAllByDays({projectId:app.globalData.projectId}).then(res =>{
if(res.code==200){
let xd = [];
let yd1=[];
let yd2=[];
res.data.list.forEach(item =>{
xd.push(item.attendanceTime);
yd1.push(item.total);
});
if(xd.length<7){
let n = 7-xd.length;
for(let i=0;i<n;i++){
xd.push('');
yd1.push(0);
}
}
for(let y=0;y<7;y++){
yd2.push(res.data.user);
}
let yd=[];
yd.push(yd1);
yd.push(yd2);
this.setData({
"labourDatas.Xdata": xd,
"labourDatas.Ydata": yd
});
if(this.data.switchChart){
let chats = this.selectComponent("#chartBar");
chats.initChart();
}
}
});
},
//获取项目的基本数据
getProjectBaseInfo: function (even) {
wx.request({
@ -642,6 +831,36 @@ Page({
})
},
/**
* 劳务管理查看详细
*/
goLWGL: function () {
if (this.data.nactive == 2) {
wx.redirectTo({
url: '../../pageage/project_attendance/project_attendanceData/list/index'
})
} else {
let type;
if (this.data.nactive == 0) {
type = 1;
} else {
type = 2;
}
wx.redirectTo({
url: '../../pageage/project_attendance/project_attendanceUser/list/index?type=' + type
})
}
},
/**
* 最近出勤
*/
goZJCQ: function () {
wx.redirectTo({
url: '../../pageage/project_attendance/project_attendanceData/list/index'
})
},
//跳转到安全管控
XMSP: function () {
wx.redirectTo({
@ -670,7 +889,7 @@ Page({
url: '../gengduogongneng/index'
})
},
//返回到地图页面
GOMAP: function () {
wx.redirectTo({
@ -704,9 +923,9 @@ Page({
res = res.data;
if (res.code == "200") {
that.setData({
todoDb: res.data.todo+res.data.approveLZYJ,
approveDb: res.data.approve+res.data.zlCount,
aq:res.data.aqCount,
todoDb: res.data.todo + res.data.approveLZYJ,
approveDb: res.data.approve + res.data.zlCount,
aq: res.data.aqCount,
})
}
}

View File

@ -19,7 +19,7 @@
</view>
<!-- 中间内容 -->
<view class="max_content" >
<view class="max_content">
<project-select init="{{initData}}" bindchange="onProjectSelect"></project-select>
<!-- <view class="video_add">
<view class="video_address">
@ -36,40 +36,64 @@
<van-collapse value="{{activeName}}" bind:change="onChange1" bind:open="onOpen" bind:close="onClose">
<van-collapse-item title="项目基本信息" name="1">
<view class="gk_open_con">
<view><image src="/images/s_1.png"></image>所属区域:<text>{{projectInfo.areaName}}</text></view>
<view><image src="/images/s_2.png"></image>详细地址:<text>{{projectInfo.projectAddress}}</text></view>
<view><image src="/images/s_3.png"></image>项目类型:<text>{{projectInfo.projectType}}</text></view>
<view><image src="/images/s_12.png"></image>项目进度:<text>{{projectInfo.projectSchedule}}</text></view>
<view><image src="/images/s_4.png"></image>总建筑面积:<text>{{projectInfo.totalBuildingArea}}</text></view>
<view><image src="/images/s_5.png"></image>计划开工日期:<text>{{projectInfo.planStartTime}}</text></view>
<view><image src="/images/s_6.png"></image>实际开工日期:<text>{{projectInfo.actualStartTime}}</text></view>
<view><image src="/images/s_7.png"></image>计划竣工日期:<text>{{projectInfo.planCompletedTime}}</text></view>
<view><image src="/images/s_8.png"></image>总工期:<text>{{projectInfo.projectTimeLimit}}</text></view>
<view><image src="/images/s_10.png"></image>项目负责人:<text>{{projectInfo.projectPerson}}</text></view>
<view><image src="/images/s_11.png"></image>项目负责人手机号:<text>{{projectInfo.projectPhone}}</text></view>
<view><image src="/images/s_15.png"></image>项目概述:<text>{{projectInfo.projectSummarize}}</text></view>
<view>
<image src="/images/s_1.png"></image>所属区域:<text>{{projectInfo.areaName}}</text>
</view>
<view>
<image src="/images/s_2.png"></image>详细地址:<text>{{projectInfo.projectAddress}}</text>
</view>
<view>
<image src="/images/s_3.png"></image>项目类型:<text>{{projectInfo.projectType}}</text>
</view>
<view>
<image src="/images/s_12.png"></image>项目进度:<text>{{projectInfo.projectSchedule}}</text>
</view>
<view>
<image src="/images/s_4.png"></image>总建筑面积:<text>{{projectInfo.totalBuildingArea}}</text>
</view>
<view>
<image src="/images/s_5.png"></image>计划开工日期:<text>{{projectInfo.planStartTime}}</text>
</view>
<view>
<image src="/images/s_6.png"></image>实际开工日期:<text>{{projectInfo.actualStartTime}}</text>
</view>
<view>
<image src="/images/s_7.png"></image>计划竣工日期:<text>{{projectInfo.planCompletedTime}}</text>
</view>
<view>
<image src="/images/s_8.png"></image>总工期:<text>{{projectInfo.projectTimeLimit}}</text>
</view>
<view>
<image src="/images/s_10.png"></image>项目负责人:<text>{{projectInfo.projectPerson}}</text>
</view>
<view>
<image src="/images/s_11.png"></image>项目负责人手机号:<text>{{projectInfo.projectPhone}}</text>
</view>
<view>
<image src="/images/s_15.png"></image>项目概述:<text>{{projectInfo.projectSummarize}}</text>
</view>
</view>
</van-collapse-item>
<van-collapse-item title="建设及管理单位信息" name="2">
<view class="construction_unit" wx:for="{{projectUnitsList}}" wx:key="unique">
<view class="construction_unit_image" >
<image src="{{item.unitTypeIcon}}"></image>
</view>
<view class="construction_unit_list">
<view class="construction_unit_title">{{item.unitTypeName}}</view>
<view class="construction_unit_name">{{item.unitName}}</view>
<view class="construction_unit_phone" bindtap="calling" data-phone="{{item.unitPersonPhone}}">{{item.unitPersonName}} {{item.unitPersonPhone}}</view>
</view>
</view>
<view class="construction_unit" wx:for="{{projectUnitsList}}" wx:key="unique">
<view class="construction_unit_image">
<image src="{{item.unitTypeIcon}}"></image>
</view>
<view class="construction_unit_list">
<view class="construction_unit_title">{{item.unitTypeName}}</view>
<view class="construction_unit_name">{{item.unitName}}</view>
<view class="construction_unit_phone" bindtap="calling" data-phone="{{item.unitPersonPhone}}">{{item.unitPersonName}} {{item.unitPersonPhone}}</view>
</view>
</view>
</van-collapse-item>
</van-collapse>
</view>
<view class="zdzb_bg">
重点指标
</view>
<view class="echarts_max">
<!-- <view class="echarts_max">
<view class="echarts_min">
<view class="eharts_title">视频监控</view>
<van-row>
@ -84,32 +108,57 @@
<ec-canvas ec="{{ ec_1 }}" id="mychart-one"></ec-canvas>
</view>
</view>
</view> -->
<view class="echarts_max">
<view class="echarts_min">
<view class="eharts_title module_title_flex">
劳务管理
<view class="module_see_info" bindtap="goLWGL">查看详情
<van-icon name="arrow" />
</view>
</view>
<!-- tab栏切换 -->
<view class="information-review-tab" bindtap="selected">
<view class="{{nactive===index?'active':''}}" data-set="{{index}}" wx:for="{{labourTypeList}}" wx:key="index">
{{item.name}}({{item.total}})
</view>
</view>
<view class="video_ai_survey">
<van-row>
<van-col span="8">
<view class="survey_content">
<view class="survey_content_img">
<image animation="{{animationData}}" src="{{labourImg}}" />
</view>
</view>
<view class="survey_content_number labour-survey_content_number">
<view class="survey_content_value">
<text>{{ labourTotal }}</text> 人
</view>
</view>
</van-col>
<van-col span="16">
<safety-bar-chart chart-id="chart2" data="{{labourData}}" height="350"></safety-bar-chart>
</van-col>
</van-row>
</view>
</view>
</view>
<view class="echarts_max">
<view class="echarts_min">
<view class="eharts_title">
劳务管理
<text class="eharts_title_float">
<text> {{weather}} </text>
<text> {{temperature}} ℃ </text>
</text>
<image src="{{weatherPic}}" class="eharts_title_float_img"></image>
</view>
<van-row>
<van-col span="12">
<view class="eharts_head">今日出勤人数:<text>{{yangchenCount}}</text></view>
</van-col>
<van-col span="12">
<view class="eharts_head">实时在场人数:<text>{{monthEarlyNum}}</text></view>
</van-col>
</van-row>
<view class="eharts_con">
<ec-canvas ec="{{ ec_3 }}" id="mychart-three"></ec-canvas>
</view>
<view class="eharts_title module_title_flex">
最近出勤
<view class="module_see_info" bindtap="goZJCQ">查看详情
<van-icon name="arrow" />
</view>
</view>
<view class="video_ai_survey">
<bar-chart id="chartBar" chartId="chartBar" chartData="{{labourDatas}}"></bar-chart>
</view>
</view>
</view>
</view>
@ -117,88 +166,38 @@
<!-- 底部导航 -->
<van-tabbar active="{{ active }}" bind:change="onChange" active-color="#ffffff" inactive-color="#7d95d6">
<van-tabbar-item>
<image
slot="icon"
src="/images/footer_5.png"
mode="aspectFit"
style="width:40rpx; height: 40rpx;"
/>
<image
slot="icon-active"
src="/images/foot_5.png"
mode="aspectFit"
style="width:40rpx; height: 40rpx;"
/>
<image slot="icon" src="/images/footer_5.png" mode="aspectFit" style="width:40rpx; height: 40rpx;" />
<image slot="icon-active" src="/images/foot_5.png" mode="aspectFit" style="width:40rpx; height: 40rpx;" />
项目概况
</van-tabbar-item>
<van-tabbar-item bindtap="XMSP">
<image
slot="icon"
src="/images/footer_7.png"
mode="aspectFit"
style="width:40rpx; height: 40rpx;"
/>
<image
slot="icon-active"
src="/images/foot_7.png"
mode="aspectFit"
style="width:40rpx; height: 40rpx;"
/>
<image slot="icon" src="/images/footer_7.png" mode="aspectFit" style="width:40rpx; height: 40rpx;" />
<image slot="icon-active" src="/images/foot_7.png" mode="aspectFit" style="width:40rpx; height: 40rpx;" />
安全管理
<span class="tabNum" wx:if="{{aq>0}}">{{aq}}</span>
</van-tabbar-item>
<van-tabbar-item bindtap="ZLGL">
<image
slot="icon"
src="/images/footer_5.png"
mode="aspectFit"
style="width:40rpx; height: 40rpx;"
/>
<image
slot="icon-active"
src="/images/foot_5.png"
mode="aspectFit"
style="width:40rpx; height: 40rpx;"
/>
<image slot="icon" src="/images/footer_5.png" mode="aspectFit" style="width:40rpx; height: 40rpx;" />
<image slot="icon-active" src="/images/foot_5.png" mode="aspectFit" style="width:40rpx; height: 40rpx;" />
质量管理
<span class="tabNum" wx:if="{{approveDb>0}}">{{approveDb}}</span>
</van-tabbar-item>
<van-tabbar-item bindtap="JDGL2">
<image
slot="icon"
src="/images/footer_6.png"
mode="aspectFit"
style="width:40rpx; height: 40rpx;"
/>
<image
slot="icon-active"
src="/images/foot_6.png"
mode="aspectFit"
style="width:40rpx; height: 40rpx;"
/>
</van-tabbar-item>
<van-tabbar-item bindtap="JDGL2">
<image slot="icon" src="/images/footer_6.png" mode="aspectFit" style="width:40rpx; height: 40rpx;" />
<image slot="icon-active" src="/images/foot_6.png" mode="aspectFit" style="width:40rpx; height: 40rpx;" />
进度管理
</van-tabbar-item>
<van-tabbar-item bindtap="GDGN">
<image
slot="icon"
src="/images/footer_1.png"
mode="aspectFit"
style="width:40rpx; height: 40rpx;"
/>
<image
slot="icon-active"
src="/images/foot_1.png"
mode="aspectFit"
style="width:40rpx; height:40rpx;"
/>
<image slot="icon" src="/images/footer_1.png" mode="aspectFit" style="width:40rpx; height: 40rpx;" />
<image slot="icon-active" src="/images/foot_1.png" mode="aspectFit" style="width:40rpx; height:40rpx;" />
更多功能
<span class="tabNum" wx:if="{{todoDb>0}}">{{todoDb}}</span>
</van-tabbar-item>
</van-tabbar>
<van-overlay show="{{loadShow}}">
@ -206,4 +205,4 @@
<image src="../../images/loding2.gif"></image>
<view>数据加载中!请稍后...</view>
</view>
</van-overlay>
</van-overlay>

View File

@ -1,5 +1,16 @@
/* pages/xiangmugaikuang/index.wxss */
.information-review-tab{
display: flex;
justify-content: space-around;
align-items: center;
height: 80rpx;
color: #92a1ca;
}
.information-review-tab .active{
color: #87e3fa;
padding-left: 40rpx;
background: url("https://szgcwx.jhncidg.com/staticFiles/icon/utilization.png") no-repeat left/35rpx;
}
/* 有赞原码修改 */
.van-collapse.van-hairline--top-bottom:after{
border-width: 0px 0;
@ -57,9 +68,9 @@
padding:0 30rpx;
}
.echarts_min{
background:#1e2336 ;
background:#1e2336;
font-size: 28rpx;
padding: 30rpx;
padding: 15rpx;
border-radius:15rpx;
}
.eharts_title{
@ -139,6 +150,58 @@
margin-right: 30rpx;
}
.survey_content {
display: flex;
align-items: center;
justify-content: center;
}
.survey_content_img {
width: 90px;
height: 90px;
text-align: center;
line-height: 90px;
position: relative;
background: url("https://szgcwx.jhncidg.com/staticFiles/icon/survey_total_icon.png") no-repeat bottom/90px 60px;
}
.survey_content_img image{
text-align: center;
line-height: 90px;
width: 50px;
height: 50px;
}
.labour-survey_content_number {
color: #cbdaff;
font-size: 16px;
text-align: center;
padding-top: 25px;
padding-left: 0;
}
.survey_content_number {
padding-left: 15px;
color: #cbdaff;
font-size: 16px;
}
.labour-survey_content_number {
color: #cbdaff;
font-size: 16px;
text-align: center;
padding-top: 25px;
padding-left: 0;
}
.survey_content_value text {
font-size: 25px;
font-style: italic;
font-weight: bold;
color: #87e3fa;
padding-right: 5px;
}

View File

@ -54,7 +54,6 @@ var dateFormat = function (timestamp, format) {
var reg1 = regYear.exec(format);
// console.log(reg1[0]);
if (reg1) {
format = format.replace(reg1[1], (realDate.getFullYear() + '').substring(4 - reg1[1].length));
}
for (var i = 0; i < date.length; i++) {
@ -87,5 +86,47 @@ module.exports = {
},
evalStr:function(str){
return eval(str);
},
dateStrEv:function(startDate,endDate){
if(startDate){
return startDate.split(" ")[0];
}else if(endDate){
return endDate.split(" ")[0];
}else{
return "未找到记录";
}
},
dateStr:function(str){
if(str){
return str.split(" ")[0];
}else{
return "";
}
},
timeStr:function(str){
if(str){
return str.split(" ")[1];
}else{
return "";
}
},
isHttpImg:function(str){
if(str.indexOf("http:")>-1 || str.indexOf("https:")>-1){
return true;
}else{
return false;
}
},
birthDate:function(timestamp){
var date = getDate(parseInt(timestamp));
var mm = date.getMonth()+1;
if(mm<10){
mm = '0'+mm;
}
var dd = date.getDate();
if(dd<10){
dd = '0'+dd;
}
return date.getFullYear()+"-"+mm+"-"+dd;
}
}

File diff suppressed because it is too large Load Diff