From 13d1f94de713cdd882680fc3ae7d4699b4510a13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A7=9C=E7=8E=89=E7=90=A6?= <7507756+jiang_yuqi@user.noreply.gitee.com> Date: Mon, 21 Aug 2023 18:55:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- miniprogram/app.json | 9 +- miniprogram/app.wxss | 4 +- miniprogram/images/info_title_0.png | Bin 0 -> 1147 bytes miniprogram/images/new_add.png | Bin 0 -> 495 bytes miniprogram/images/web_select_date.png | Bin 0 -> 918 bytes .../select-group-person/index.js | 122 +++++++ .../select-group-person/index.json | 4 + .../select-group-person/index.wxml | 38 ++ .../select-group-person/index.wxss | 125 +++++++ .../newComponents/select-person/index.js | 3 + .../newComponents/select-person/index.wxml | 2 +- .../pageage/project_checking/add/index.js | 331 ++++++++++++++++++ .../pageage/project_checking/add/index.json | 6 + .../pageage/project_checking/add/index.wxml | 111 ++++++ .../pageage/project_checking/add/index.wxss | 7 + .../pageage/project_checking/info/index.js | 107 ++++++ .../pageage/project_checking/info/index.json | 4 + .../pageage/project_checking/info/index.wxml | 127 +++++++ .../pageage/project_checking/info/index.wxss | 1 + .../pageage/project_checking/list/index.js | 130 +++++++ .../pageage/project_checking/list/index.json | 7 + .../pageage/project_checking/list/index.wxml | 47 +++ .../pageage/project_checking/list/index.wxss | 1 + .../pages/components/project-select/index.js | 30 +- .../pages/components/voucher-date/index.wxml | 2 +- .../index.js | 10 +- .../index.json | 0 .../index.wxml | 4 +- .../index.wxss | 0 .../pages/gengduogongneng/gengduogongneng.js | 4 + .../pages/xiangmugaikuang/xiangmugaikuang.js | 10 +- 31 files changed, 1213 insertions(+), 33 deletions(-) create mode 100644 miniprogram/images/info_title_0.png create mode 100644 miniprogram/images/new_add.png create mode 100644 miniprogram/images/web_select_date.png create mode 100644 miniprogram/newComponents/select-group-person/index.js create mode 100644 miniprogram/newComponents/select-group-person/index.json create mode 100644 miniprogram/newComponents/select-group-person/index.wxml create mode 100644 miniprogram/newComponents/select-group-person/index.wxss create mode 100644 miniprogram/pageage/project_checking/add/index.js create mode 100644 miniprogram/pageage/project_checking/add/index.json create mode 100644 miniprogram/pageage/project_checking/add/index.wxml create mode 100644 miniprogram/pageage/project_checking/add/index.wxss create mode 100644 miniprogram/pageage/project_checking/info/index.js create mode 100644 miniprogram/pageage/project_checking/info/index.json create mode 100644 miniprogram/pageage/project_checking/info/index.wxml create mode 100644 miniprogram/pageage/project_checking/info/index.wxss create mode 100644 miniprogram/pageage/project_checking/list/index.js create mode 100644 miniprogram/pageage/project_checking/list/index.json create mode 100644 miniprogram/pageage/project_checking/list/index.wxml create mode 100644 miniprogram/pageage/project_checking/list/index.wxss rename miniprogram/pages/components/{voucher-date-copy => voucher-datetime}/index.js (87%) rename miniprogram/pages/components/{voucher-date-copy => voucher-datetime}/index.json (100%) rename miniprogram/pages/components/{voucher-date-copy => voucher-datetime}/index.wxml (91%) rename miniprogram/pages/components/{voucher-date-copy => voucher-datetime}/index.wxss (100%) 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 0000000000000000000000000000000000000000..0ee281f2702d180961980671f043399aacd57080 GIT binary patch literal 1147 zcmaJ>Pe>eB9G+y2wi=^SVr`1#F+yvgJOB2N?!;9$jvE&`vTPPy3KC~$-s+$;Z=89$ zVsqYK*@#|N`qOoG_J-px~Cg-xgrrTAXb2DOqh=7#_4@sk<9&VmInI}JRYat zn99j%(1&aYB1|->^5IU<5o7phmGOfkeDdz9s4F`^-`f)FH#pfh7)#SNNHTUkMZj%w=`){zN(MJ11> zaGWMi-=ttzhq9(~P$p6^)>SN)XE;BlGEkP^4>gQKw1YG7t>1SFJJ}fvvKi>0DO)86 zS7`G?Sz@0J6^!gGLKEdGrpFLQ&KRGta(K)kEkYzDtI#@APn3Cc&kzjOP z6T?C%Aw(j=xnwfT^ZkiLvO`KnqA`w(hQd52mAMj9rwnM~GFN-c4OQg&yw$^+9u3P(IuCv)&9ePm6kK}J0Upq3%HQr8a zcV4fmYg+!Lrt0C#TCRGD+4#`oueW-i&bb}e3ZHL`G}9|jtJkK}QLj6&&^|wW|H{U9 z;NE)r`;%T^F4yXzqt8p=mAt?`smTXH;qs%M&H1hq;mISV#rdYfvxe~VhE3rm-FUHP zYc;(?FIE5gh;M(eyjV!zn!Pu8bm`C0@LwNq&aVvjUTX37dbfuctB!R)`^bCxTfO?@ ztT$4+`q}R6SKDq=eW=h~*}8$a zn51@1>O(*HAWJqo-_FcVGLhX&jl~Rb0&D}zz&z!k2Rs8E;0*XMRzkjXECAQQYDvb^ zFdJOAJOH+UZYXN#iK;}nFg9<1wNNz26B3bN1!x8+c2JPw9f~>%DT#G!BW-g>_FKAd z6E#5{crDor5fG=w{Uk@yC|d+S*q99*7yXtE6tQK)XD#CqAGEETvDfu+*YXt-Wn7OT zWS~cwRz7?^@@EKTFctC*|0Xnn@kkCEG9Z=#I)m=BS@UAMR;I0@(6sS9mKIS_ovAWM zB=2TmawLaGqIfHqGYY$+ILw<@DY!i!A3>BO&T53*PNqx^z3hZ_+&H$qUnofQ#22vp<+IYX2WPmPEFVR8URj#Jzxo# lD=7@`zzc8%w1z)wfKPRrQnC2Yp5p)j002ovPDHLkV1gd()4Tux literal 0 HcmV?d00001 diff --git a/miniprogram/images/web_select_date.png b/miniprogram/images/web_select_date.png new file mode 100644 index 0000000000000000000000000000000000000000..9e308420f4a99f6314ada42135e76d82a07ad3bd GIT binary patch literal 918 zcmV;H18Mw;P)W~7Br->^jM%$x@*)c zsCXr%tgvWWHhnC#^p4E!9QoXy(|c~UlT7Y6=gj=)-1(nx&V26lK_R9r0;+*ZUt#BAaBZ!y0hM&sKJZ&aQsAw{VJE~l$9 zBENxaz)7GhqX)>*Pv(;_+#P<5&$)8kh>&OYON7-3uOm3CN9ecTu=^Uf#&9s)tClD2~g|)v!gW6u20M2 z_rnQ04HwI!`TlZ#%;VxBB5z{y8&}^NE`B~&zjt_%btjcUpakd{ql|(0`^3fYp9g&L zC|ay9T($R-+(YQev7yA(Zo?1!Yqac@UODbhaJe(J*|XP9ajEo2B9QhN<@+D;@t0_a zEAlRUo#f=-ymgV5y}&C)?>NgT5ju!SeFT1i?(;rxPZnm`v$?AFfWr~^{RvX^piOQ> zOT2Y9eHz2(7bz}y_Iz*Mt(?Y;>BPpI65Ba1xo&)c>=uyMh^)t;Id|1wU&l!Hvj+t07*qoM6N<$f+PFMG5`Po literal 0 HcmV?d00001 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}} + + + 验收图片 + + + + + + 质量专员 + + + + + + + 监理专员 + + + + + + + 工序部位 + + + + + + 验收描述 + +