diff --git a/miniprogram/app.json b/miniprogram/app.json index e37697a..a4a0279 100644 --- a/miniprogram/app.json +++ b/miniprogram/app.json @@ -58,7 +58,6 @@ "biangeng/index", "suishoupai/suishoupai", "suishoupai-psh/suishoupai-psh", - "lw-index/lw-index", "lw-baobiaochaxun/lw-baobiaochaxun", "lw-gerenxinxi/lw-gerenxinxi", @@ -78,7 +77,10 @@ "samplingRetestingDetail/index", "Progress-management/index", "Material-Management/index", - "technical-management/index" + "technical-management/index", + "project_checking/add/index", + "project_checking/list/index", + "project_checking/info/index" ], "independent": false } @@ -111,7 +113,7 @@ "voucher-selects": "pages/components/voucher-selects/index", "voucher-selected": "pages/components/voucher-selected/index", "voucher-date": "pages/components/voucher-date/index", - "voucher-date-copy": "pages/components/voucher-date-copy/index", + "voucher-datetime": "pages/components/voucher-datetime/index", "file-uploader": "pages/components/file-uploader/index", "project-select": "pages/components/project-select/index", "safety-pie-chart": "./newComponents/safety-pie-chart/index", @@ -124,6 +126,7 @@ "sign": "pages/components/sign/sign", "safety-number": "./newComponents/number/index", "select-person": "./newComponents/select-person/index", + "select-group-person": "./newComponents/select-group-person/index", "van-dropdown-menu": "@vant/weapp/dropdown-menu/index", "van-dropdown-item": "@vant/weapp/dropdown-item/index", "curve-echarts": "pages/components/curve-echarts/index", diff --git a/miniprogram/app.wxss b/miniprogram/app.wxss index 1c21a07..263656c 100644 --- a/miniprogram/app.wxss +++ b/miniprogram/app.wxss @@ -1094,10 +1094,10 @@ swiper-item video{ /* 安全管理 安全检查 */ .inspect_max{ - padding: 30rpx; + padding: 10rpx 30rpx; } .inspect_list{ - padding: 20rpx 0; + padding: 10rpx 0; } .inspect_for{ padding: 20rpx 0; diff --git a/miniprogram/images/info_title_0.png b/miniprogram/images/info_title_0.png new file mode 100644 index 0000000..0ee281f Binary files /dev/null and b/miniprogram/images/info_title_0.png differ diff --git a/miniprogram/images/new_add.png b/miniprogram/images/new_add.png new file mode 100644 index 0000000..5f11ed2 Binary files /dev/null and b/miniprogram/images/new_add.png differ diff --git a/miniprogram/images/web_select_date.png b/miniprogram/images/web_select_date.png new file mode 100644 index 0000000..9e30842 Binary files /dev/null and b/miniprogram/images/web_select_date.png differ diff --git a/miniprogram/newComponents/select-group-person/index.js b/miniprogram/newComponents/select-group-person/index.js new file mode 100644 index 0000000..d33a2a4 --- /dev/null +++ b/miniprogram/newComponents/select-group-person/index.js @@ -0,0 +1,122 @@ +// newComponents/select-group-person/index.js +Component({ + /** + * 组件的属性列表 + */ + properties: { + title:{ + type:String + }, + choose:{ + type:Array + }, + multiple:{ + type:Boolean, + value:true + }, + rectifierData:{ + type:Array, + value:[] + } + }, + observers: { + choose: function (val) { + this.setData({ + gridData : val + }) + }, + }, + lifetimes: { + created: function(){ + //在组件实例刚刚被创建时执行,注意此时不能调用 setData + }, + attached: function () { + //在组件实例进入页面节点树时执行 + }, + ready: function () { + // 在组件在视图层布局完成后执行 + }, + detached: function () { + // 在组件实例被从页面节点树移除时执行 + }, + }, + + /** + * 组件的初始数据 + */ + data: { + show:false, + gridData:[], + selectedIndex:[], + titleValue:"" + }, + + /** + * 组件的方法列表 + */ + methods: { + onAddResponsible(){ + this.setData({ + show:true + }) + }, + onClose(){ + this.setData({ + show:false + }) + }, + onSelected(e){ + var data = this.data.rectifierData; + let ei = e.currentTarget.dataset.index; + let index = ei.split('_'); + let userdata = data[index[0]].userinfoList[index[1]]; + let of = this.data.selectedIndex.indexOf(ei); + if(of>-1){ + this.data.selectedIndex.splice(of, 1); + userdata.state = false; + }else{ + this.data.selectedIndex.push(ei); + userdata.state = true; + } + if(!this.data.multiple && this.data.selectedIndex.length>0){ + if(this.data.selectedIndex.length>1){ + this.data.selectedIndex.forEach((item) =>{ + let _indexs = item.split('_'); + data[_indexs[0]].userinfoList[_indexs[1]].state = false; + }); + userdata.state = true; + this.data.selectedIndex=[]; + this.data.selectedIndex.push(ei); + } + let _gridData=[{userName:userdata.nickName+" ["+userdata.jobTypeName+"]",phoneNumber:userdata.phonenumber}]; + this.triggerEvent('selected',_gridData) + this.setData({ + titleValue:_gridData[0].userName, + rectifierData:data, + show:false + }) + }else{ + if(of>-1){ + this.data.selectedIndex.splice(of, 1); + userdata.state = false; + }else{ + this.data.selectedIndex.push(index); + userdata.state = true; + } + this.setData({ + rectifierData : data + }) + } + }, + onConfirm(){ + var data = this.data.rectifierData + let gridData = data.filter(x => x.state == true); + this.triggerEvent('selected',gridData) + this.setData({ + gridData:gridData, + show:false + }) + } + + } +}) diff --git a/miniprogram/newComponents/select-group-person/index.json b/miniprogram/newComponents/select-group-person/index.json new file mode 100644 index 0000000..7e37c03 --- /dev/null +++ b/miniprogram/newComponents/select-group-person/index.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/miniprogram/newComponents/select-group-person/index.wxml b/miniprogram/newComponents/select-group-person/index.wxml new file mode 100644 index 0000000..9a1766c --- /dev/null +++ b/miniprogram/newComponents/select-group-person/index.wxml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + {{title}} + + + + + + [{{item.unitTypeName}}] {{item.unitName}} + + + + + + + {{items.phonenumber}} + {{items.nickName}} [{{items.jobTypeName}}] + + + + + + 取消 + 确认 + + + \ No newline at end of file diff --git a/miniprogram/newComponents/select-group-person/index.wxss b/miniprogram/newComponents/select-group-person/index.wxss new file mode 100644 index 0000000..4d25943 --- /dev/null +++ b/miniprogram/newComponents/select-group-person/index.wxss @@ -0,0 +1,125 @@ +/* newComponents/select-person/index.wxss */ +.rectifier_add_to{ + width: 100rpx; + height: 100rpx; + margin: auto; + background: #252d41; + text-align: center; + line-height: 110rpx; + font-size: 50rpx; + color: #57668f; + font-weight: bold; + border-radius: 5rpx; +} +.rectifier_max{ + width: 600rpx; + background: #232a44; + border-radius: 15rpx; +} +.rectifier_title{ + position: relative; + background: #27304f; + border-radius: 15rpx; + text-align: center; + padding:20rpx 15rpx; +} +.rectifier_close{ + position: absolute; + width: 50rpx; + height: 50rpx; + right: 20rpx; + top: 12rpx; + line-height: 60rpx; + text-align: center; +} +.rectifier_list{ + padding:20rpx 40rpx; +} +.rectifier_list_height{ + height: 580rpx; + overflow: auto; +} +.rectifier_list_for{ + display: flex; + align-items: center; + padding: 8rpx 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.rectifier_list_radio{ + width: 70rpx; +} +.rectifier_list_radio_circle{ + width: 30rpx; + height: 30rpx; + border-radius: 50%; + border: 1px solid #6576a2; +} +.rectifier_list_radio_circle.active{ + background: #8262f3; + border: 1px solid #8262f3; +} +.rectifier_list_name{ + padding-left: 10rpx; + color: #6576a2; +} +.rectifier_list_name.active{ + color: #ffffff; +} +.rectifier_btn{ + display: flex; + align-items: center; + background: #27304f; + border-radius: 0 0 15rpx 15rpx; +} +.rectifier_btn view{ + width: 50%; + text-align: center; + height: 80rpx; + line-height: 80rpx; + color:#6874a4; +} +.rectifier_btn view:last-child{ + border-left: 1px solid #6874a4; + color: #ffffff; +} +.rectifier_list-group_for{ + height: 65rpx; + background-color: #58628a; + line-height: 65rpx; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + margin-top: 20rpx; +} +.inspect_input_fill_in { + height: 90rpx; + background: #212737; + border-radius: 10rpx; + padding: 0 30rpx; +} + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/miniprogram/newComponents/select-person/index.js b/miniprogram/newComponents/select-person/index.js index f53adf8..03040ab 100644 --- a/miniprogram/newComponents/select-person/index.js +++ b/miniprogram/newComponents/select-person/index.js @@ -4,6 +4,9 @@ Component({ * 组件的属性列表 */ properties: { + title:{ + type:String + }, choose:{ type:Array }, diff --git a/miniprogram/newComponents/select-person/index.wxml b/miniprogram/newComponents/select-person/index.wxml index fe57254..6b07e67 100644 --- a/miniprogram/newComponents/select-person/index.wxml +++ b/miniprogram/newComponents/select-person/index.wxml @@ -15,7 +15,7 @@ - 整改责任人 + {{title}} diff --git a/miniprogram/pageage/project_checking/add/index.js b/miniprogram/pageage/project_checking/add/index.js new file mode 100644 index 0000000..0e6dfbe --- /dev/null +++ b/miniprogram/pageage/project_checking/add/index.js @@ -0,0 +1,331 @@ +// pageage/safetyManagement/addSafetyInspect/index.js +const app = getApp() +Page({ + + /** + * 页面的初始数据 + */ + data: { + maxDate:new Date(2088,1,1).getTime(), + currentDate:new Date().getTime(), + deptId:"", + projectId:"", + projectName:"", + loginName:"", + userName:"", + rectifierData:[], + rectifierData2:[], + imageInfoData:[], + checkingResult:"", + //验收时间 + checkTime:'', + loadShow:false, + qualityUser:"", + qualityUserName:"", + superviseUser:"", + superviseUserName:"", + checkWorkingPosition:"", + intro:"" + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + let {projectId,projectName} = options + //获取缓存数据 + wx.getStorage({ + key: 'userinfo', + success:res=>{ + this.setData({ + projectId, + projectName, + deptId:res.data.deptId, + loginName:res.data.loginName, + userName:res.data.nickName + }) + this.getProjectUserData() + } + }) + }, + + //查询项目人员数据 + getProjectUserData(){ + let that = this + wx.request({ + url: app.globalData.reqUrl+'/weixin/projectuserinfo/list', + method:"get", + data:{ + projectId:that.data.projectId + }, + header:{ + 'content-type': 'application/x-www-form-urlencoded' + }, + success(res){ + res = res.data + if(res.code == 200){ + let tempData = [] + that.setData({ + rectifierData:res.data, + rectifierData2:res.data + }) + } + } + }) + }, + + //切换验收结果 + onStateSelect(e){ + let state = e.currentTarget.dataset.set; + this.setData({ + checkingResult:state, + }); + }, + + //工序部位 + onInputCheckWorkingPositionValue(e){ + let checkWorkingPosition = e.detail.value + this.setData({ + checkWorkingPosition + }) + }, + //验收描述 + onInputIntroValue(e){ + let intro = e.detail.value + this.setData({ + intro + }) + }, + + //验收时间 + onInputTime(e){ + let checkTime = e.detail + this.setData({ + checkTime + }) + }, + + // list 上传图片 + onImagesArr(e){ + var data = this.data.imageInfoData + data = e.detail + this.setData({ + imageInfoData:data + }) + }, + + //添加质量专员 + onAddQualityUser(e){ + if(e.detail.length>0){ + this.setData({ + qualityUser:e.detail[0].phoneNumber, + qualityUserName:e.detail[0].userName + }) + } + }, + + //添加监理专员 + onAddSuperviseUser(e){ + if(e.detail.length>0){ + this.setData({ + superviseUser:e.detail[0].phoneNumber, + superviseUserName:e.detail[0].userName + }) + } + }, + + //取消页面 + cancelSaveView(){ + wx.navigateBack() + }, + + //保存 + onProblemSubmitSave(){ + this.setData({ + loadShow:true + }) + let that = this + let {projectId,deptId,qualityUser,qualityUserName,superviseUser,superviseUserName,checkWorkingPosition,intro,checkTime,checkingResult,imageInfoData,loginName,userName} = that.data; + //数据效验 + if(projectId==""||deptId==""||loginName==""){ + app.toast("数据异常,请刷新页面重试!") + that.setData({ + loadShow:false + }) + return; + } + if(qualityUser==""||qualityUserName==""){ + app.toast("请选择质量专员!") + that.setData({ + loadShow:false + }) + return; + } + if(superviseUser==""||superviseUserName==""){ + app.toast("请选择监理专员!") + that.setData({ + loadShow:false + }) + return; + } + if(checkWorkingPosition==""){ + app.toast("请填写验收工序部位!") + that.setData({ + loadShow:false + }) + return; + } + if(intro==""){ + app.toast("请填写验收结果描述!") + that.setData({ + loadShow:false + }) + return; + } + if(checkTime==""){ + app.toast("请选择验收时间!") + that.setData({ + loadShow:false + }) + return; + } + if(checkingResult==""){ + app.toast("请选择验收结果!") + that.setData({ + loadShow:false + }) + return; + } + + let fileUrls = []; + imageInfoData.forEach(async (item)=>{ + let uploadUrl = app.globalData.reqUrl+'/weixin/common/upload' + let name = "file" + //这里复杂的图片上传,改为同步上传,因为小程序只能上传一张图片 + let obj = await that.syncUploadImage(uploadUrl,item,name); + fileUrls.push(obj.data.fileName); + //验证图片上传完毕 + if(fileUrls.length == imageInfoData.length){ + let params = { + projectId, + deptId:deptId, + qualityUser, + qualityUserName, + superviseUser, + superviseUserName, + checkWorkingPosition, + intro, + checkingDate:checkTime, + checkResult:checkingResult, + createBy:loginName, + imageUrls:fileUrls.toString() + } + wx.request({ + url: app.globalData.reqUrl + '/weixin/projectchecking/add', + method:"POST", + data:params, + header: { + "Content-Type": "application/json" + }, + success(res){ + that.setData({ + loadShow:false + }) + res =res.data + if(res.code == 200){ + app.toast("添加成功!") + setTimeout(()=>{ + wx.navigateTo({ + url: '../list/index', + }) + },2000) + } + } + }) + } + }) + }, + + /** + * 这里考虑上传图片异步问题,封装为同步 + */ + 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) + } + }); + }) + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/miniprogram/pageage/project_checking/add/index.json b/miniprogram/pageage/project_checking/add/index.json new file mode 100644 index 0000000..fed9af1 --- /dev/null +++ b/miniprogram/pageage/project_checking/add/index.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + "van-overlay": "@vant/weapp/overlay/index" + }, + "navigationBarTitleText": "新增举牌验收" +} \ No newline at end of file diff --git a/miniprogram/pageage/project_checking/add/index.wxml b/miniprogram/pageage/project_checking/add/index.wxml new file mode 100644 index 0000000..e522cdd --- /dev/null +++ b/miniprogram/pageage/project_checking/add/index.wxml @@ -0,0 +1,111 @@ + + + + {{projectName}} + + + 验收图片 + + + + + + 质量专员 + + + + + + + 监理专员 + + + + + + + 工序部位 + + + + + + 验收描述 + +