epmet 工作端 小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1693 lines
44 KiB

import {
$wuxActionSheet
} from '../../../../../components/dist/index'
const QQMapWX = require('../../../../../utils/qqmap-wx-jssdk')
const config = require('../../../../../utils/config')
const app = getApp()
var recorderManager = wx.getRecorderManager();
var innerAudioContext = wx.createInnerAudioContext()
import api from "../../../../../utils/api"
var timer;
Page({
/**
* 页面的初始数据
*/
data: {
optionsId: '',
defaultMeasureNames: {
label: 'categoryName',
value: 'categoryCode',
children: 'childCateList'
},
fmData: {
gridId: '',
attachmentList: [], //图片
voiceList: [],
latitude: "",
longitude: "",
resiId: "",
happenTime: "",
content: "", //内容
address: "", //地址
},
minDate: '2018-01-01 00:00:00',
tabVal: "0",
ruTabVal: "yes",
uploadImageList: [], //图片上传的数组
streetList: [], // 街道
imageId: 1,
addressContent: '',
overDuration: 600000,
duration: 0,
url: '',
hasStop: false,
hasStart: false, // 录音开始 暂停
isStart: false, // 是否开启录音
recordingTime: '00:00',
recordingLength: 0,
setInter: null,
showRecord: false, // 是否显示录音sheet
uploadRecord: {
uploaded: true,
url: ""
},
totalTime: "00:00", // 录音时长
submitDisabled: false,
// 时间组件
visibleTime: false,
angencyList: [], //组织下拉数据
angencyId: "",
totalMax: 0,
stepValue: 0,
hasPlay: false,
playUrl: "",
// defaultFieldNames: { label: 'agencyName', value: 'agencyId', children: 'subAgencyList' },
angencyVisible: false,
measureList: [],
measureValue: '',
measureVisible: false,
reportUserName: '',
reportUserMobile: '',
showWantServiceTimeTime: '',
reportTypeList: [], //上报类型
reportTypeVisible: false
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
this.setData({
angencyId: app.globalData.user.agencyId,
reportUserName: app.globalData.user.realName,
reportUserMobile: app.globalData.user.phone,
})
this.getAgencygridtree()
this.getDemandoption()
this.getDictList()
if (options.id) {
if (options.type === '0') {
this.getIcEventOldDetail(options.id)
} else {
this.getDemandDetail(options.id)
}
this.setData({
tabVal: options.type || 0,
optionsId: options.id
})
return
}
this.data.qqMapWX = new QQMapWX({
key: 'CMJBZ-4DECI-JXGGN-5B4WU-QLV2H-B5BEJ'
})
// this.getLocation().then(() => {
// })
this.reverseLocation()
},
getDemandDetail(id) {
let parm = {
demandRecId: id
}
api.getDemandDetail(parm).then(res => {
console.log(res);
this.setData({
'fmData.content': res.data.content,
// 'fmData.voiceList':res.data.voiceList,
'fmData.gridId': res.data.gridId,
'fmData.demandUserId': res.data.reportUserId,
'fmData.categoryCode': res.data.categoryCode,
'fmData.reportType': res.data.reportType,
'fmData.happenTime': res.data.reportTime,
'fmData.wantServiceTime': res.data.wantServiceTime,
'fmData.resiId': res.data.icResiUserId,
categoryName: res.data.parentCategoryName + res.data.firstCategoryName,
agencyName: res.data.gridName,
reportTypeName: res.data.reportTypeName,
resiName: res.data.demandUserName,
resiMobile: res.data.demandUserMobile,
showTime: res.data.reportTime,
showWantServiceTimeTime: res.data.wantServiceTime,
// uploadImageList:res.data.imageList.map(item=>({ossUrl:{url:item},uploaded:true})),
// uploadRecord:res.data.voiceList[0],
// totalTime:this.format(res.data.voiceList[0].duration)
})
this.downLoadAudio()
}).catch(err => {
console.log(err);
})
},
getIcEventOldDetail(id) {
let parm = {
icEventId: id
}
api.getIcEventOld(parm).then(res => {
console.log(res);
this.setData({
'fmData.content': res.data.eventContent,
'fmData.voiceList': res.data.voiceList || [],
'fmData.gridId': res.data.gridId,
'fmData.happenTime': res.data.happenTime,
'fmData.address': res.data.address,
'fmData.resiId': res.data.reportUserId,
'fmData.longitude': res.data.longitude,
'fmData.latitude': res.data.latitude,
'fmData.demandType': res.data.demandType,
'fmData.responsibleUnit': res.data.responsibleUnit,
'fmData.responsibleName': res.data.responsibleName,
'fmData.responsibleMobile': res.data.responsibleMobile,
agencyName: res.data.gridName,
showTime: res.data.happenTime,
addressContent: res.data.address,
resiName: res.data.name,
resiMobile: res.data.mobile,
responsibleUnit: res.data.responsibleUnit,
responsibleName: res.data.responsibleName,
responsibleMobile: res.data.responsibleMobile,
uploadImageList: res.data.imageList && res.data.imageList.length > 0 ? res.data.imageList.map(item => ({
ossUrl: {
url: item
},
uploaded: true
})) : [],
uploadRecord: res.data.voiceList && res.data.voiceList.length > 0 ? res.data.voiceList[0] : null,
totalTime: this.format(res.data.voiceList && res.data.voiceList.length > 0 ? res.data.voiceList[0].duration : 0)
})
if (this.data.uploadRecord) {
this.downLoadAudio()
}
}).catch(err => {
console.log(err);
})
},
update() {
this.submitPersonalInfo()
},
updateMeasure() {
this.setData({
submitDisabled: true
})
let {
categoryCode,
content,
happenTime,
resiId,
gridId,
attachmentList,
voiceList,
wantServiceTime,
parentCode,
reportType
} = this.data.fmData
const parm = {
categoryCode,
content,
reportUserName: this.data.reportUserName,
reportTime: happenTime,
reportUserMobile: this.data.reportUserMobile,
demandUserId: resiId,
gridId,
reportType,
// attachments:[...attachmentList,...voiceList],
wantServiceTime,
parentCode: parentCode,
demandRecId: this.data.optionsId
}
api.updateMeasure(parm).then(res => {
if (res.code === 0) {
wx.showModal({
title: '提示',
content: `提交成功`,
confirmText: '确认',
showCancel: false,
success: res => {
this.setData({
submitDisabled: false,
uploadImageList: [],
uploadRecord: {
uploaded: true,
url: ""
},
agencyName: '',
showTime: '',
resiName: '',
resiMobile: '',
'fmData.gridId': '',
'fmData.attachmentList': [], //图片
'fmData.voiceList': [],
'fmData.latitude': "",
'fmData.longitude': "",
'fmData.resiId': "",
'fmData.happenTime': "",
'fmData.content': "", //内容
'fmData.wantServiceTime': "",
'fmData.reportType': ''
})
wx.navigateBack({
delta: 1
})
}
})
wx.removeStorageSync('resiDetail')
} else {
console.log('提交失败');
wx.showToast({
title: "提交失败,请重试~",
icon: "none",
duration: 1500
})
this.setData({
submitDisabled: false
})
}
}).catch(err => {
wx.showToast({
title: "提交失败,请重试~",
icon: "none",
duration: 1500
})
this.setData({
submitDisabled: false
})
})
setTimeout(function () {
wx.hideLoading()
}, 1000)
},
updateEvent() {
wx.showLoading({
title: '提交中...',
mask: true
})
this.setData({
submitDisabled: true
})
const parm = this.data.fmData
parm.icEventId = this.data.optionsId
console.log(parm, '事件更新');
api.updateEvent(parm).then(res => {
console.log(res);
if (res.code === 0) {
wx.showModal({
title: '提示',
content: `修改成功`,
confirmText: '确认',
showCancel: false,
success: res => {
this.setData({
submitDisabled: false,
uploadImageList: [],
uploadRecord: {
uploaded: true,
url: ""
},
agencyName: '',
showTime: '',
resiName: '',
resiMobile: '',
'fmData.gridId': '',
'fmData.attachmentList': [], //图片
'fmData.voiceList': [],
'fmData.latitude': "",
'fmData.longitude': "",
'fmData.resiId': "",
'fmData.happenTime': "",
'fmData.content': "", //内容
'fmData.wantServiceTime': "",
'fmData.reportType': ''
})
wx.navigateBack({
delta: 1
})
}
})
wx.removeStorageSync('resiDetail')
} else {
console.log('提交失败');
wx.showToast({
title: "提交失败,请重试~",
icon: "none",
duration: 1500
})
this.setData({
submitDisabled: false
})
}
}).catch(err => {
console.log(err)
wx.showToast({
title: "提交失败,请重试~",
icon: "none",
duration: 1500
})
this.setData({
submitDisabled: false
})
})
setTimeout(function () {
wx.hideLoading()
}, 1000)
},
delete() {
let that = this
wx.showModal({
title: '提示',
content: '确定要删除这条数据吗,删除后将无法找回,请谨慎操作',
success(res) {
if (res.confirm) {
console.log(that.data.tabVal);
if (that.data.tabVal == 0) {
that.icEventOldDelete()
} else {
that.userDemandCance()
}
} else if (res.cancel) {}
}
})
},
icEventOldDelete() {
api.icEventOldDelete([this.data.optionsId]).then(res => {
if (res.code === 0) {
wx.showToast({
title: '删除成功',
icon: 'none',
success() {
setTimeout(() => {
wx.navigateBack({
delta: 1
})
}, 3000)
}
})
}
}).catch(err => {
console.log(err);
})
},
userDemandCance() {
let parm = {
demandRecId: this.data.optionsId
}
api.userDemandCance(parm).then(res => {
if (res.code === 0) {
wx.showToast({
title: '删除成功',
icon: 'none'
})
}
}).catch(err => {
console.log(err);
})
},
// 组织树
getAgencygridtree() {
let parm = {
agencyId: this.data.angencyId,
purpose: 'query'
}
api.getGridoptionDict(parm).then(res => {
console.log(res);
this.setData({
angencyList: res.data
})
}).catch(err => {
console.log(err);
})
},
getDictList() {
api.getDictList('user_demand_report_type').then(res => {
console.log(res);
this.setData({
reportTypeList: res.data
})
}).catch(err => {
console.log(err);
})
},
getDemandoption() {
api.getDemandoption().then(res => {
console.log(res);
this.setData({
measureList: res.data
})
}).catch(err => {
console.log(err);
})
},
// 触底函数
onReachBottom() {
if (this.projectlist) {
this.projectlist.onReachBottom()
}
},
//跳转地图选点
toughGetLocation() {
// this.getLocation(false);
wx.chooseLocation({
success: res => {
console.log('resadddres', res)
const {
fmData
} = this.data;
this.setData({
fmData: {
...fmData,
address: res.address,
longitude: res.longitude,
latitude: res.latitude
},
addressContent: res.address
});
console.log(this.data.fmData);
}
})
},
showRecordSheet() {
this.setData({
showRecord: true,
recorderData: {},
recordingTime: "0:00",
uploadRecord: {
uploaded: true,
url: ""
}
})
},
// 获取经纬度
// getLocation() {
// return new Promise((resolve, reject) => {
// const _this = this
// wx.getLocation({
// type: 'gcj02',
// success(res) {
// if (res.latitude && res.longitude) {
// _this.setData({
// 'personalInfo.issueLatitude': res.latitude,
// 'personalInfo.issueLongitude': res.longitude
// })
// resolve(true)
// }
// },
// fail(err) {
// reject(err)
// }
// })
// })
// },
// 提交按钮
submitPersonalInfo() {
const imagesList = []
if (this.data.uploadImageList.length > 0) {
const isUploadDown = this.data.uploadImageList.some(item => !item.uploaded)
if (isUploadDown) {
wx.showToast({
title: '请等待图片上传完成',
icon: 'none',
duration: 1000
})
return false
}
}
console.log(this.data.uploadImageList);
if (this.data.uploadImageList.length > 0) {
this.data.uploadImageList.forEach(item => {
imagesList.push({
format: item.format || 'png',
originFileName: item.originFileName || '',
url: item.ossUrl.url,
type: item.type
})
})
}
this.setData({
'fmData.attachmentList': imagesList,
})
console.log(this.data.tabVal);
if (!this.data.fmData.gridId) {
this.showToast('所属组织不能为空')
return
}
if (this.data.tabVal === '1') {
if (!this.data.fmData.content) {
this.showToast('需求描述不能为空')
return
}
if (!this.data.fmData.content) {
this.showToast('需求描述不能为空')
return
}
if (!this.data.fmData.categoryCode) {
this.showToast('需求类型不能为空')
return
}
if (!this.data.fmData.reportType) {
this.showToast('上报类型不能为空')
return
}
if (!this.data.fmData.happenTime) {
this.showToast('需求时间不能为空')
return
}
if (!this.data.fmData.wantServiceTime) {
this.showToast('服务时间不能为空')
return
}
if (!this.data.fmData.resiId) {
this.showToast('需求人不能为空')
return
}
if (!this.data.resiMobile) {
this.showToast('需求人电话不能为空')
return
}
} else {
if (!this.data.fmData.content) {
this.showToast('事件描述不能为空')
return
}
if (!this.data.fmData.happenTime) {
this.showToast('发生时间不能为空')
return
}
if (!this.data.fmData.address) {
this.showToast('发生地点不能为空')
return
}
if (!this.data.fmData.resiId && (this.data.tabVal==0 || this.data.tabVal==1)) {
this.showToast('联系人不能为空')
return
}
if (!this.data.resiMobile && (this.data.tabVal==0 || this.data.tabVal==1)) {
this.showToast('联系人电话不能为空')
return
}
if (!this.data.fmData.responsibleName && this.data.tabVal==2 && this.data.ruTabVal=='yes') {
this.showToast('责任人不能为空')
return
}
if (!this.data.fmData.responsibleMobile && this.data.tabVal==2 && this.data.ruTabVal=='yes') {
this.showToast('责任人电话不能为空')
return
}
}
if (this.data.tabVal === '1') {
this.data.optionsId ? this.updateMeasure() : this.submitMeasure();
} else {
this.data.optionsId ? this.updateEvent() : this.submitEven();
}
},
// 事件提交接口
submitEven() {
wx.showLoading({
title: '提交中...',
mask: true
})
this.setData({
submitDisabled: true
})
// 事件上报
if(this.data.tabVal==0){
this.setData({
'fmData.demandType': 'report'
})
}
// 城管上报
if(this.data.tabVal==2){
this.setData({
'fmData.demandType': 'chengguan'
})
}
if(this.data.ruTabVal=='yes'){
this.setData({
'fmData.responsibleUnit': 'yes'
})
}else{
his.setData({
'fmData.responsibleUnit': 'no'
})
}
const parm = this.data.fmData
parm.reportUserId = this.data.fmData.resiId
parm.eventContent = this.data.fmData.content
parm.sourceType = "4"
console.log(parm, '事件');
api.addEvent(parm).then(res => {
console.log(res);
if (res.code === 0) {
wx.showModal({
title: '提示',
content: `提交成功`,
confirmText: '确认',
showCancel: false,
success: res => {
this.setData({
submitDisabled: false,
uploadImageList: [],
uploadRecord: {
uploaded: true,
url: ""
},
agencyName: '',
showTime: '',
resiName: '',
resiMobile: '',
'fmData.gridId': '',
'fmData.attachmentList': [], //图片
'fmData.voiceList': [],
'fmData.latitude': "",
'fmData.longitude': "",
'fmData.resiId': "",
'fmData.happenTime': "",
'fmData.content': "", //内容
'fmData.wantServiceTime': "",
// 'fmData.reportType': '',
// 'fmData.demandType': '',
// 'fmData.responsibleUnit': '',
// 'fmData.responsibleName': '',
// 'fmData.responsibleMobile': ''
})
wx.switchTab({
url: '/pages/work/work',
})
}
})
wx.removeStorageSync('resiDetail')
} else {
console.log('提交失败');
wx.showToast({
title: "提交失败,请重试~",
icon: "none",
duration: 1500
})
this.setData({
submitDisabled: false
})
}
}).catch(err => {
console.log(err)
wx.showToast({
title: "提交失败,请重试~",
icon: "none",
duration: 1500
})
this.setData({
submitDisabled: false
})
})
setTimeout(function () {
wx.hideLoading()
}, 1000)
},
// 个性服务提交
submitMeasure() {
wx.showLoading({
title: '提交中...',
mask: true
})
this.setData({
submitDisabled: true
})
let {
categoryCode,
content,
happenTime,
resiId,
gridId,
attachmentList,
voiceList,
wantServiceTime,
parentCode,
reportType
} = this.data.fmData
const parm = {
categoryCode,
content,
reportUserName: this.data.reportUserName,
reportTime: happenTime,
reportUserMobile: this.data.reportUserMobile,
demandUserId: resiId,
gridId,
reportType,
// attachments:[...attachmentList],
voices: [...voiceList],
wantServiceTime,
parentCode: parentCode
}
console.log(parm, '服务');
api.addMeasure(parm).then(res => {
console.log(res);
if (res.data) {
wx.showModal({
title: '提示',
content: `提交成功`,
confirmText: '确认',
showCancel: false,
success: res => {
this.setData({
submitDisabled: false,
uploadImageList: [],
uploadRecord: {
uploaded: true,
url: ""
},
agencyName: '',
showTime: '',
resiName: '',
resiMobile: '',
categoryName: '',
reportTypeName: '',
showWantServiceTimeTime: '',
'fmData.gridId': '',
'fmData.attachmentList': [], //图片
'fmData.voiceList': [],
'fmData.latitude': "",
'fmData.longitude': "",
'fmData.resiId': "",
'fmData.happenTime': "",
'fmData.content': "", //内容
'fmData.wantServiceTime': "",
'fmData.reportType': ''
})
wx.switchTab({
url: '/pages/work/work',
})
}
})
wx.removeStorageSync('resiDetail')
} else {
wx.showToast({
title: "提交失败,请重试~",
icon: "none",
duration: 1500
})
this.setData({
submitDisabled: false
})
}
}).catch(err => {
console.log(err)
wx.showToast({
title: "提交失败,请重试~",
icon: "none",
duration: 1500
})
this.setData({
submitDisabled: false
})
})
setTimeout(function () {
wx.hideLoading()
}, 1000)
},
// 双向绑定 内容输入框
bindTextareaInput(e) {
this.setData({
'fmData.content': e.detail.value
})
console.log(this.data.fmData);
},
bindResponsibleName(e) {
this.setData({
'fmData.responsibleName': e.detail.value
})
console.log(this.data.fmData);
},
bindResponsibleMobile(e) {
this.setData({
'fmData.responsibleMobile': e.detail.value
})
console.log(this.data.fmData);
},
// 点击空白,隐藏sheet
onHideSheet() {
this.setData({
showRecord: false
})
},
// 选择图片 上传弹窗 - 上传图片方式 - 选择图片 - 上传图片 - 回调赋值
chooseImage() {
if (this.data.uploadImageList.length > 3) {
wx.showToast({
title: "最多上传3张照片",
icon: "none"
})
return
}
const _this = this
$wuxActionSheet().showSheet({
buttons: [{
text: '拍照'
},
{
text: '从相册中获取',
openType: null,
},
],
className: 'dialog-class',
buttonClicked(index) {
if (index === 0) {
wx.chooseMedia({
count: 1,
sizeType: ['original', 'compressed'],
sourceType: ['camera'],
success(res) {
console.log(res);
let deleteLength = _this.data.uploadImageList.length
const uploadImageList = [..._this.data.uploadImageList]
if (res.tempFiles[0].size <= 5 * 1024 * 1024) {
uploadImageList.push({
uploaded: false,
ossUrl: {
url: res.tempFiles[0].tempFilePath
},
imgUrl: res.tempFiles[0].tempFilePath,
imageId: ++_this.data.imageId,
type: res.tempFiles[0].tempFilePath.substr(res.tempFiles[0].tempFilePath.length - 3, 3),
format: "image",
name: 'wximage'
})
} else {
_this.showToast('图片上限5M,请压缩后重试~')
return false
}
_this.setData({
uploadImageList
})
wx.uploadFile({
url: `${config.BASEURL()}oss/file/uploadvariedfile`,
filePath: res.tempFiles[0].tempFilePath,
name: 'file',
header: {
'Content-type': 'application/json;charset=UTF-8',
'Authorization': wx.getStorageSync('token')
},
success(fileRes) {
if (!JSON.parse(fileRes.data).data) {
_this.showToast('图片上传失败,请重试~')
// 删除
const index = _this.data.uploadImageList.findIndex(item => item.imageId === _this.data.imageId)
if (index > -1) {
_this.data.uploadImageList.splice(index, 1)
_this.setData({
uploadImageList: _this.data.uploadImageList
})
}
} else {
uploadImageList[uploadImageList.length - 1].uploaded = true
uploadImageList[uploadImageList.length - 1].ossUrl = JSON.parse(fileRes.data).data
_this.setData({
uploadImageList
})
}
},
fail(fileRes) {
_this.setData({
uploadImageList: []
})
_this.showToast('图片上传失败,请重试~')
}
})
}
})
} else if (index === 1) {
wx.chooseMedia({
count: 1,
type: 'image',
sourceType: ['album'],
success(res) {
console.log(res, '图片上传的res');
let deleteLength = _this.data.uploadImageList.length
const uploadImageList = []
const endIndex = _this.data.uploadImageList.length
res.tempFiles.forEach((item, index) => {
if (item.size <= 5 * 1024 * 1024) {
uploadImageList.push({
uploaded: false,
ossUrl: {
url: item.tempFilePath
},
imgUrl: item.tempFilePath,
imageId: ++_this.data.imageId,
format: "image",
type: item.tempFilePath.substr(item.tempFilePath.length - 3, 3),
originFileName: 'image' + index + 1
})
} else {
_this.showToast('图片上限5M,请压缩后重试~')
}
})
_this.setData({
uploadImageList: [..._this.data.uploadImageList, ...uploadImageList]
})
uploadImageList.forEach((item, index) => {
return (function (index) {
wx.uploadFile({
url: `${config.BASEURL()}oss/file/uploadvariedfile`,
filePath: res.tempFiles[index].tempFilePath,
name: 'file',
header: {
'Content-type': 'application/json;charset=UTF-8',
'Authorization': wx.getStorageSync('token')
},
success(fileRes) {
if (!JSON.parse(fileRes.data).data) {
_this.showToast('图片上传失败,请重试~')
_this.data.uploadImageList.splice(deleteLength, _this.data.uploadImageList.length - deleteLength)
_this.setData({
uploadImageList: _this.data.uploadImageList
})
} else {
uploadImageList[index].uploaded = true
uploadImageList[index].ossUrl = JSON.parse(fileRes.data).data
_this.data.uploadImageList = _this.data.uploadImageList.slice(0, endIndex)
_this.setData({
uploadImageList: [..._this.data.uploadImageList, ...uploadImageList]
})
}
},
fail(fileRes) {
_this.setData({
uploadImageList: []
})
_this.showToast('图片上传失败,请重试~')
}
})
})(index)
})
}
})
}
return true
},
cancelText: '取消',
cancel() {},
destructiveButtonClicked() {},
})
},
// 删除选中的图片
deleteImage(e) {
const index = this.data.uploadImageList.findIndex(item => item.imageId === e.currentTarget.dataset.imageid)
if (index > -1) {
this.data.uploadImageList.splice(index, 1)
this.setData({
uploadImageList: this.data.uploadImageList
})
}
},
// 代码简化,弹窗统一封装
showToast(title) {
wx.showToast({
title: title,
icon: 'none',
duration: 2000
})
},
// 单选点击事件
inputSyncPicker(e) {
let {
detail: {
value
},
currentTarget: {
dataset: {
idKey,
nameKey,
listName,
subname,
subindex
},
},
} = e;
let item = this.data[listName][value];
let {
personalInfo
} = this.data;
if (subname && subindex !== undefined) {
personalInfo[subname][subindex][idKey] = item.value;
personalInfo[subname][subindex][nameKey] = item.label;
} else {
personalInfo[idKey] = item.value;
personalInfo[nameKey] = item.label;
}
this.setData({
personalInfo
});
this.dataHandle(listName)
},
dataHandle(listName) {
if (listName == 'streetList') {
this.setData({
communityList: [],
gridList: [],
'personalInfo.community': '', // 社区
'personalInfo.communityId': '', // 社区
})
} else if (listName == 'communityList') {
this.setData({
gridList: [],
'personalInfo.grid': '', // 网格
'personalInfo.gridId': '' // 网格
})
}
if (this.data.personalInfo.streetId) { // 选择街道
this.data.streetList.forEach((element, index) => {
if (this.data.personalInfo.streetId == element.value) {
this.setData({
communityList: element.children
})
}
});
}
if (this.data.personalInfo.communityId) { // 选择社区
this.data.communityList.forEach((element, index) => {
if (this.data.personalInfo.communityId == element.value) {
this.setData({
gridList: element.children
})
}
});
}
},
// 逆地址解析
reverseLocation() {
const _this = this
this.data.qqMapWX.reverseGeocoder({
success(res) {
console.log(res);
_this.setData({
addressContent: res.result.address,
'fmData.address': res.result.address,
'fmData.longitude': res.result.location.lng,
'fmData.latitude': res.result.location.lat,
})
},
fail(err) {
console.debug(err)
}
})
},
onConfirmDate(e) {
this.setData({
'fmData.happenTime': e.detail.label + ':00',
visibleTime: false,
showTime: e.detail.label + ':00'
})
},
onConfirmWantServiceTime(e) {
this.setData({
'fmData.wantServiceTime': e.detail.label + ':00',
visibleTimeWantServiceTime: false,
showWantServiceTimeTime: e.detail.label + ':00'
})
},
//时间组件隐藏
onCancel(e) {
this.setData({
visibleTime: false,
visibleTimeWantServiceTime: false
})
},
bindMobile(e) {
this.setData({
resiMobile: e.detail.value
})
},
getCurrentDateTime() {
const date = new Date();
const year = date.getFullYear();
const month = (1 + date.getMonth()).toString().padStart(2, '0'); // Months are zero-based.
const day = date.getDate().toString().padStart(2, '0');
const hours = date.getHours().toString().padStart(2, '0');
const minutes = date.getMinutes().toString().padStart(2, '0');
const seconds = date.getSeconds().toString().padStart(2, '0');
return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds;
},
showTimePicker(e) {
this.setData({
visibleTime: true,
maxDate: this.getCurrentDateTime(),
'fmData.happenTime': this.getCurrentDateTime(),
})
},
showTimePickerW(e) {
this.setData({
visibleTimeWantServiceTime: true,
maxDate: this.getCurrentDateTime(),
'fmData.wantServiceTime': this.getCurrentDateTime(),
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
let resiDetail = wx.getStorageSync('resiDetail')
if (resiDetail) {
this.setData({
"fmData.resiId": resiDetail.resiId,
resiName: resiDetail.resiName,
resiMobile: resiDetail.resiMobile
})
}
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
wx.removeStorageSync('resiDetail')
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
wx.removeStorageSync('resiDetail')
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 用户点击右上角分享
*/
// /page/user?id=123
onShareAppMessage() {
},
handleRecordDel() {
const {
hasStop,
isStart
} = this.data
console.log('hasStop---', this.data.hasStop)
if (isStart && !hasStop) {
recorderManager.stop()
}
if (!hasStop && isStart) recorderManager.stop();
recorderManager.stop();
clearInterval(timer)
timer = null
this.setData({
recordingTime: '00:00',
recordingLength: 0,
hasStart: false,
isStart: false,
hasStop: false,
url: '',
duration: 0
})
},
handleRecord() {
let {
hasStart
} = this.data
console.log(hasStart);
if (hasStart) this.recortPause()
else this.recortResume()
},
handleOpenRecord() {
this.setData({
isStart: true,
});
console.log('opppppp')
this.recordStart()
},
// 录音暂停
recortPause() {
recorderManager.pause();
this.setData({
hasStart: false
})
clearInterval(timer)
timer = null
},
// 录音继续
recortResume() {
this.recordingTimer()
recorderManager.resume();
this.setData({
hasStart: true
})
},
// 录音上传
uploadRecord(file, duration) {
wx.uploadFile({
url: `${config.BASEURL()}oss/file/uploadvoice`,
filePath: file,
name: "file",
header: {
"Content-type": "multipart/form-data",
'Authorization': wx.getStorageSync('token')
},
success: (fileRes) => {
wx.hideLoading()
console.log('ressss', fileRes)
if (!JSON.parse(fileRes.data).data) {
wx.showToast({
title: "录音上传失败,请重试~",
icon: "none",
duration: 1500
})
this.setData({
"uploadRecord.uploaded": true,
"uploadRecord.url": "",
totalTime: "",
showRecord: false,
hasStart: false,
isStart: false,
recordingTime: '00:00'
})
} else {
// let { recordingLength } = this.data
// if (duration - (recordingLength * 1000) > 1000 ) duration = recordingLength * 1000
let url = JSON.parse(fileRes.data).data.url
let fileName = Date.now() + Math.floor(Math.random() * 1000)
this.setData({
"uploadRecord.uploaded": true,
"uploadRecord.url": url,
'fmData.voiceList': [{
url: url,
format: null,
type: 'mp3',
duration,
originFileName: fileName.toString()
}],
showRecord: false,
hasStart: false,
isStart: false,
recordingTime: '00:00',
})
this.downLoadAudio()
console.log(this.data.fmData.voiceList);
}
},
fail: (fileRes) => {
console.log(fileRes);
wx.showToast({
title: "录音上传失败,请重试~",
icon: "none",
duration: 1500
})
this.setData({
"uploadRecord.uploaded": true,
"uploadRecord.url": "",
totalTime: "",
})
}
})
},
// 录音开始
recordStart() {
this.setData({
hasStart: true,
});
const options = {
duration: this.data.overDuration,
format: 'mp3',
type: 'voice'
};
this.recordingTimer()
recorderManager.start(options);
recorderManager.onStart(res => {
console.log('recorder start', res);
});
recorderManager.onPause(res => {
console.log('onPause', res)
})
console.log(recorderManager);
recorderManager.onResume(res => {
console.log('onResume', res)
})
recorderManager.onStop((res) => {
console.log('recorder stop', res);
const {
tempFilePath,
duration
} = res;
this.setData({
hasStop: true,
url: tempFilePath,
duration
})
});
recorderManager.onFrameRecorded(res => {
console.log('onFrameRecorded', res)
})
recorderManager.onError((res) => {
console.log('recorder onError', res);
wx.showToast({
title: res.errMsg,
icon: 'none',
duration: 1500
})
});
},
// 录音暂停
recortPause() {
recorderManager.pause();
this.setData({
hasStart: false
})
clearInterval(timer)
timer = null
},
// 录音继续
recortResume() {
this.recordingTimer()
recorderManager.resume();
this.setData({
hasStart: true
})
},
// 录音结束
recordStop() {
const {
url,
recordingLength,
hasStop
} = this.data
this.setData({
hasStart: false
})
wx.showLoading({
title: '录音上传中...'
})
console.log(url, recordingLength, hasStop)
if (hasStop) {
this.uploadRecord(url, 600000)
console.log('hasStop', hasStop)
} else {
console.log('hasStopeee', hasStop)
recorderManager.stop();
clearInterval(timer)
timer = null
recorderManager.onStop((res) => {
console.log('recorder stop1111', res);
const {
tempFilePath,
duration
} = res;
this.uploadRecord(tempFilePath, duration)
//
console.log(duration, '上传结束的语音时间');
this.setData({
recordingLength: 0,
totalTime: this.format(duration)
})
});
}
},
recordingTimer() {
clearInterval(timer)
timer = null
timer = setInterval(() => {
let {
overDuration,
recordingLength
} = this.data
if (recordingLength * 1000 >= overDuration) {
wx.showToast({
title: '录音已超时,已停止录音',
icon: 'none',
duration: 1500
})
console.log('lllllllll超时了')
recorderManager.stop();
clearInterval(timer)
timer = null
this.setData({
hasStart: false
})
return
}
let time = this.data.recordingLength + 1;
this.setData({
recordingLength: time,
recordingTime: this.formatTime(time)
});
console.log('timer,还在执行', this.data.recordingLength)
}, 1000);
},
formatTime(num) {
let min = parseInt(num / 60)
let second = num % 60
min = min >= 10 ? min : '0' + min
second = second >= 10 ? second : '0' + second
return min + ':' + second
},
hancleCancle() {
this.handleRecordDel()
this.setData({
showRecord: false
})
},
hidePickerAngency() {
this.setData({
angencyVisible: false
})
},
showPicker() {
this.setData({
angencyVisible: true
})
},
onConfirmAngecy(e) {
this.setData({
agencyName: e.detail.label,
'fmData.gridId': e.detail.value[e.detail.value.length - 1],
angencyVisible: false
})
},
onConfirmReportType(e) {
console.log(e);
this.setData({
reportTypeName: e.detail.label,
'fmData.reportType': e.detail.value[0],
reportTypeVisible: false
})
},
hidePickerReportType() {
this.setData({
reportTypeVisible: false
})
},
// 播放逻辑
initDuration() {
var _a = this.data,
duration = _a.duration;
if (duration) {
this.setData({
totalMax: duration
});
}
console.log('totalMax', this.data.totalMax);
},
downLoadAudio() {
var _this = this;
wx.downloadFile({
url: this.data.uploadRecord.url,
success(res) {
console.log(res);
if (res.statusCode === 200) {
console.log('res2222222', res);
_this.setData({
playUrl: res.tempFilePath
});
_this.initAudio();
} else {
wx.showToast({
title: '音频加载失败',
icon: 'none',
duration: 1500
});
}
},
fail(err) {
console.log(err);
wx.showToast({
title: '音频加载失败',
icon: 'none',
duration: 1500
});
}
});
},
initAudio() {
var _this = this;
innerAudioContext.src = this.data.playUrl;
innerAudioContext.autoplay = false;
this.initDuration();
console.log('ppppplllaaa', innerAudioContext);
innerAudioContext.onCanplay(() => {
console.log('初始化播放', innerAudioContext.duration);
});
innerAudioContext.onPlay(() => {
console.log('开始播放', innerAudioContext.duration);
});
innerAudioContext.onTimeUpdate(() => {
console.log("duration-onTimeUpdate", innerAudioContext.duration);
console.log("currentTime", innerAudioContext.currentTime);
if (innerAudioContext.duration) {
_this.setData({
totalMax: (innerAudioContext.duration * 1000),
});
}
_this.setData({
stepValue: (innerAudioContext.currentTime * 1000),
});
console.log('stepValue', _this.data.stepValue);
console.log('totalTime', _this.data.totalTime);
console.log('totalMax', _this.data.totalMax);
});
innerAudioContext.onEnded(function () {
console.log("end");
_this.setData({
hasPlay: false
});
});
innerAudioContext.onError((res) => {
console.log("errMsg", res.errMsg);
wx.showToast({
title: res.errMsg,
icon: 'none',
duration: 1500
});
});
},
handlePlay() {
var hasPlay = this.data.hasPlay;
if (hasPlay)
this.audioPause();
else
this.audioPlay();
},
audioPause() {
innerAudioContext.pause();
this.setData({
hasPlay: false
});
},
audioPlay() {
innerAudioContext.play();
this.setData({
hasPlay: true
});
console.log('innerAudioContext', innerAudioContext);
},
// 需求分类
onConfirmMeasure(e) {
console.log(e);
this.setData({
'fmData.categoryCode': e.detail.selectedValue[1],
'fmData.parentCode': e.detail.selectedValue[0],
categoryName: e.detail.label,
measureVisible: false
})
},
slideChange(e) {
this.audioPause();
var value = e.detail.value;
console.log('slidechange', value);
innerAudioContext.seek(value / 1000);
this.setData({
stepValue: value,
});
this.audioPlay();
},
handleSlideMove(e) {
this.audioPause();
},
handleAudioDel() {
innerAudioContext.stop();
console.log('innerAudioContextdel', innerAudioContext);
this.setData({
totalTime: '00:00',
'fmData.voiceList': []
})
},
showMeasurePicker() {
this.setData({
measureVisible: true
})
},
showReportTypePicker() {
this.setData({
reportTypeVisible: true
})
},
hidePickerMeasure() {
this.setData({
measureVisible: false
})
},
handleChangeType(e) {
this.setData({
tabVal: e.detail.value
})
},
handleChangeResponsibleUnit(e) {
this.setData({
ruTabVal: e.detail.value,
'fmData.responsibleUnit': e.detail.value
})
},
format(num) {
let min = parseInt(num / 1000 / 60)
let second = parseInt(num / 1000) % 60
min = min >= 10 ? min : '0' + min
second = second >= 10 ? second : '0' + second
return min + ':' + second
},
process() {
wx.navigateTo({
url: `/subpages/myTroubleshootDemand/pages/event/event?id=${this.data.optionsId}`,
})
},
})