From 4b659fc290398c3e78f2f9474a4f0d8fe592e16e Mon Sep 17 00:00:00 2001 From: SelfRidicule Date: Fri, 26 Jul 2024 17:28:44 +0800 Subject: [PATCH] 1 --- miniprogram/app.json | 3 +- .../pages/reportRepair/repairAdd/repairAdd.js | 387 ++++++++++++++++++ .../reportRepair/repairAdd/repairAdd.json | 12 + .../reportRepair/repairAdd/repairAdd.wxml | 78 ++++ .../reportRepair/repairAdd/repairAdd.wxss | 119 ++++++ .../pages/reportRepair/reportRepair.js | 11 +- .../pages/reportRepair/reportRepair.wxml | 2 +- 7 files changed, 609 insertions(+), 3 deletions(-) create mode 100644 miniprogram/pages/reportRepair/repairAdd/repairAdd.js create mode 100644 miniprogram/pages/reportRepair/repairAdd/repairAdd.json create mode 100644 miniprogram/pages/reportRepair/repairAdd/repairAdd.wxml create mode 100644 miniprogram/pages/reportRepair/repairAdd/repairAdd.wxss diff --git a/miniprogram/app.json b/miniprogram/app.json index b1a6883..7f40305 100644 --- a/miniprogram/app.json +++ b/miniprogram/app.json @@ -73,7 +73,8 @@ "pages/meeting/reservationRecord/exhibitionRecord/list/list", "pages/meeting/reservationRecord/exhibitionRecord/detail/detail", "pages/meeting/meetingRoom/meetingService/meetingService", - "pages/reportRepair/reportRepair" + "pages/reportRepair/reportRepair", + "pages/reportRepair/repairAdd/repairAdd" ], "window": { "backgroundTextStyle": "light", diff --git a/miniprogram/pages/reportRepair/repairAdd/repairAdd.js b/miniprogram/pages/reportRepair/repairAdd/repairAdd.js new file mode 100644 index 0000000..d95771a --- /dev/null +++ b/miniprogram/pages/reportRepair/repairAdd/repairAdd.js @@ -0,0 +1,387 @@ +let app = getApp(); + +import Notify from '@vant/weapp/notify/notify'; + +import { + selfFormatTimeYMDHMS +} from "../../../utils/util.js" + +import { + visitorPersonRq, + selectVisitorRecordByIdRq, + updateVisitorPersonStatusRq +} from "../../../api/meeting/visitorIinvitation.js" + + +Page({ + + /** + * 页面的初始数据 + */ + data: { + IMG_NAME: app.IMG_NAME, + id: null, + title: null, + userDetail: {}, + idcardTypeShow: false, + idcardTypeList: [{ + name: '居民身份证', + }, ], + visitTimeShow: false, // 到访时间show + visitTimeDate: new Date().getTime(), // 到访时间-当前 + visitTimeMinDate: new Date().getTime(), // 到访时间-最小 + leaveTimeShow: false, // 离开时间show + leaveTimeDate: new Date().getTime(), // 离开时间-当前 + fileList: [], // 上传文件 + detail: { + customerId: null, //企业id + customerName: null, //企业名称 + userId: null, // 被访人id + userName: null, //被访人姓名 + userMobile: null, //被访人手机号 + intervieweeId: null, // 访客id + name: null, // 访客姓名 + phone: null, // 访客手机号 + cardType: '居民身份证', // 证件类型 + cardNo: null, // 证件号 + visitTime: null, // 到访时间 + leaveTime: null, // 离开时间 + visitContent: null, // 来访事由 + photo: null, // 头像-相对路径 + url: null, // 人脸设备图片-全路径 + }, + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + console.log('onLoad', options) + let _this = this; + let userDetail = wx.getStorageSync('user') + // + let detail = _this.data.detail; + // 添加 默认设置访客信息 + detail.intervieweeId = userDetail.id // 访客id + detail.name = userDetail.username // 访客姓名 + detail.phone = userDetail.mobile // 访客手机号 + _this.setData({ + ...options, + userDetail, + detail + }) + // 页面初始化 options为页面跳转所带来的参数 + wx.setNavigationBarTitle({ + title: options.title + }) + }, + + // 跳转-索引栏(单位、人员) + jumpIndexBar(e) { + console.log('jumpIndexBar', e); + let _this = this; + let title = e.currentTarget.dataset.title + // 校验是否选择“被访单位” 后 ,再选择被访人信息 + if (title == '人员' && !_this.data.detail.customerId) { + // 错误消息提示 + _this.showErrMsg('请先选择被访单位!') + return; + } + // url 参数 + let param = '?title=' + title; + if (title == '人员') { + param = param + '&id=' + _this.data.detail.customerId; + } + wx.navigateTo({ + url: '/pages/meeting/visitorIinvitation/indexBar/indexBar' + param, + }) + }, + + // 显示-身份证类型 + showIdcardType() { + let _this = this; + _this.setData({ + idcardTypeShow: true + }) + }, + + // 选择-身份证类型 + selectIdcardType(e) { + console.log('selectIdcardType', e); + let _this = this; + let detail = _this.data.detail; + detail.cardType = e.detail.name; + _this.setData({ + idcardTypeShow: false, + detail + }) + }, + + // 关闭-身份证类型 + closeIdcardType() { + let _this = this; + _this.setData({ + idcardTypeShow: false + }) + }, + + // 显示-到访时间 + showVisitTime() { + let _this = this; + _this.setData({ + visitTimeShow: true + }) + }, + + // 关闭-到访时间 + closeVisitTime() { + let _this = this; + _this.setData({ + visitTimeShow: false + }) + }, + + // 确认-到访时间 + confirmVisitTime(e) { + console.log('confirmVisitTime', e); + let _this = this; + let detail = _this.data.detail; + detail.visitTime = selfFormatTimeYMDHMS(e.detail); + _this.setData({ + visitTimeShow: false, + visitTimeDate: e.detail, + detail + }) + }, + + // 显示-离开时间 + showLeaveTime() { + let _this = this; + _this.setData({ + leaveTimeShow: true + }) + }, + + // 关闭-离开时间 + closeLeaveTime() { + let _this = this; + _this.setData({ + leaveTimeShow: false + }) + }, + + // 确认-离开时间 + confirmLeaveTime(e) { + console.log('confirmLeaveTime111', e); + let _this = this; + let detail = _this.data.detail; + detail.leaveTime = selfFormatTimeYMDHMS(e.detail); + _this.setData({ + leaveTimeShow: false, + leaveTimeDate: e.detail, + detail + }) + }, + + + // 图片-上传前校验 + beforeRead(event) { + const { + file, + callback + } = event.detail; + callback(file.type === 'image'); + }, + + // 图片-上传后 + afterRead(event) { + let _this = this; + const { + file + } = event.detail; + // 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式 + wx.uploadFile({ + url: app.DOMAIN_NAME + '/api/dfs/upload', + filePath: file.url, + name: 'file', + formData: {}, + success(res) { + console.log('upload file ', res); + let fileData = JSON.parse(res.data) + // 上传完成需要更新 fileList + let fileList = _this.data.fileList; + fileList.push({ + relativeUrl: fileData.fileName, + url: app.IMG_NAME + fileData.fileName, + name: fileData.fileName, + deletable: true, + }) + _this.setData({ + fileList + }) + }, + }); + }, + + // 删除图片 + deleteImg(event) { + console.log('deleteImg', event); + let _this = this; + let fileList = _this.data.fileList; + fileList.splice(event.detail.index, 1); + _this.setData({ + fileList + }) + }, + + // input输入内容监听 + fieldInput(e) { + console.log('fieldInput', e); + let _this = this; + let detail = _this.data.detail; + detail[e.currentTarget.dataset.name] = e.detail + _this.setData({ + detail + }) + }, + + // 提交数据 + submitData() { + let _this = this; + // 上传文件列表 + let fileList = _this.data.fileList; + // 数据 + let detail = _this.data.detail; + // + // 校验数据 + // + // 被访单位 + if (!detail.customerId) { + _this.showErrMsg('请选择被访单位!') + return; + } + // 被访人姓名 + if (!detail.userName) { + _this.showErrMsg('请输入被访人姓名!') + return; + } + // 被访人电话 + if (!detail.userMobile) { + _this.showErrMsg('请输入被访人电话!') + return; + } + // 访客姓名 + if (!detail.name) { + _this.showErrMsg('请填写访客姓名!') + return; + } + // 访客手机号 + if (!detail.phone) { + _this.showErrMsg('请填写访客手机号!') + return; + } + // 证件号 + if (!detail.cardNo) { + _this.showErrMsg('请填写证件号!') + return; + } + // 到访时间 + if (!detail.visitTime) { + _this.showErrMsg('请选择到访时间!') + return; + } + // 离开时间 + if (!detail.leaveTime) { + _this.showErrMsg('请选择离开时间!') + return; + } + // 来访事由 + if (!detail.visitContent) { + _this.showErrMsg('请填写来访事由!') + return; + } + // 图片上传 + if (fileList && fileList.length > 0) { + detail.photo = fileList[0].relativeUrl // 头像-相对路径 + detail.url = fileList[0].url // 人脸设备图片-全路径 + } else { + _this.showErrMsg('请上传照片!') + return; + } + // + // 添加数据 + visitorPersonRq(detail).then(res => { + console.log('visitorPersonRq', res); + // 刷新上个页面参数 + let pages = getCurrentPages(); //获取page + let prevPage = pages[pages.length - 2]; //上一个页面(父页面) + prevPage.setData({ + changeData: true + }) + // + if (res.code == 0) { + wx.navigateBack() + } else { + _this.showErrMsg(res.msg) + } + }) + }, + + + // 显示错误消息 + showErrMsg(msg) { + Notify({ + type: 'danger', + message: msg + }); + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/miniprogram/pages/reportRepair/repairAdd/repairAdd.json b/miniprogram/pages/reportRepair/repairAdd/repairAdd.json new file mode 100644 index 0000000..1420240 --- /dev/null +++ b/miniprogram/pages/reportRepair/repairAdd/repairAdd.json @@ -0,0 +1,12 @@ +{ + "navigationBarTitleText": "我要报修", + "usingComponents": { + "van-field": "@vant/weapp/field/index", + "van-popup": "@vant/weapp/popup/index", + "van-uploader": "@vant/weapp/uploader/index", + "van-datetime-picker": "@vant/weapp/datetime-picker/index", + "van-notify": "@vant/weapp/notify/index", + "van-action-sheet": "@vant/weapp/action-sheet/index", + "van-dialog": "@vant/weapp/dialog/index" + } +} \ No newline at end of file diff --git a/miniprogram/pages/reportRepair/repairAdd/repairAdd.wxml b/miniprogram/pages/reportRepair/repairAdd/repairAdd.wxml new file mode 100644 index 0000000..640643b --- /dev/null +++ b/miniprogram/pages/reportRepair/repairAdd/repairAdd.wxml @@ -0,0 +1,78 @@ + + + 预约信息 + + + + 被访单位 + + + + 被访人姓名 + + + + 被访人电话 + + + + 访客姓名 + + + + 手机号码 + + + + 身份证类型 + + + + 身份证号 + + + + 到访时间 + + + + 离开时间 + + + + + 来访事由 + + + + 访客照片 + + + + + + + + 提示:请保持五官清晰,以方便系统精准识 + + + + 提交 + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/miniprogram/pages/reportRepair/repairAdd/repairAdd.wxss b/miniprogram/pages/reportRepair/repairAdd/repairAdd.wxss new file mode 100644 index 0000000..2404f97 --- /dev/null +++ b/miniprogram/pages/reportRepair/repairAdd/repairAdd.wxss @@ -0,0 +1,119 @@ +.containerView.public { + height: auto; +} + +.headView { + padding: 30rpx 20rpx; + background: #f6f6f6; +} + +.contentView {} + +.contentView .rowView.self { + padding: 28rpx 28rpx 28rpx 30rpx; + align-items: flex-start; +} + +.contentView .rowView { + display: flex; + justify-content: space-between; + align-items: center; + padding: 2rpx 0 2rpx 30rpx; + border-bottom: 1px solid rgb(126, 126, 126, 0.2); +} + +.contentView .rowView:last-of-type { + border-bottom: none; +} + +.contentView .rowView .label { + position: relative; + font-size: 30rpx; + color: #000000; + min-width: 120rpx; + margin-right: 30rpx; +} + +.contentView .rowView .label.must::after { + content: '*'; + display: block; + position: absolute; + left: 100%; + top: 6rpx; + margin-left: 10rpx; + color: red; +} + +.input { + font-size: 30rpx; +} + + +.uploadImgView { + padding: 0 40rpx; + background-color: #ffffff; + font-size: 28rpx; + color: #646566; +} + +.uploadImgView .tipsView { + text-align: center; +} + +.submitBtnView { + width: 600rpx; + padding: 20rpx; + background: #4e96f8; + color: white; + font-size: 30rpx; + text-align: center; + border-radius: 10rpx; + margin: 60rpx auto; +} + +.submitBtn { + box-sizing: border-box; + position: fixed; + z-index: 10; + width: 600rpx; + left: 50%; + transform: translateX(-50%); + bottom: 120rpx; + border-radius: 10rpx; + padding: 20rpx; + background: #4e96f8; + color: white; + font-size: 30rpx; + text-align: center; +} + + +.textarea { + height: 300rpx !important; + border: 1px solid rgb(126, 126, 126, 0.2) !important; + padding: 20rpx !important; +} + +.dialogBtnView { + display: flex; + justify-content: space-between; + align-items: center; + border-top: 1px solid rgb(126, 126, 126, 0.2); +} + +.dialogBtnView .rejectBtn, +.dialogBtnView .successBtn { + width: 50%; + text-align: center; + padding: 30rpx 0; + font-size: 32rpx; +} + +.dialogBtnView .rejectBtn { + border-right: 1px solid rgb(126, 126, 126, 0.2); + color: red; +} + +.dialogBtnView .successBtn { + color: #4e96f8; +} \ No newline at end of file diff --git a/miniprogram/pages/reportRepair/reportRepair.js b/miniprogram/pages/reportRepair/reportRepair.js index a10b66e..23dd83e 100644 --- a/miniprogram/pages/reportRepair/reportRepair.js +++ b/miniprogram/pages/reportRepair/reportRepair.js @@ -10,7 +10,7 @@ Page({ menuList: [{ name: "我要报修", img: "/profile/static/index/menu-bxfw.png", - path: "/pages/reportRepair/reportRepair" + path: "/pages/reportRepair/repairAdd/repairAdd" }, { name: "报修查询", img: "/profile/static/index/menu-ztyy.png", @@ -33,6 +33,15 @@ Page({ }, + // 跳转菜单 + jumpMenu(e){ + console.log('jumpMenu' , e); + let obj = e.currentTarget.dataset.obj + wx.navigateTo({ + url: obj.path, + }) + }, + /** * 生命周期函数--监听页面初次渲染完成 */ diff --git a/miniprogram/pages/reportRepair/reportRepair.wxml b/miniprogram/pages/reportRepair/reportRepair.wxml index 5db9cd7..c9b5293 100644 --- a/miniprogram/pages/reportRepair/reportRepair.wxml +++ b/miniprogram/pages/reportRepair/reportRepair.wxml @@ -10,7 +10,7 @@ - + {{item.name}}