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.

576 lines
17 KiB

import {
$wuxActionSheet
} from '../../../../components/dist/index'
const config = require('../../../../utils/config')
const QQMapWX = require('../../../../utils/qqmap-wx-jssdk')
const App = getApp()
import {
addRecord,
securityCheckk,
inspectionStaff
} from "../../../../utils/api"
Page({
/**
* 页面的初始数据
*/
data: {
hiddenDangeList: [
],
newObj:[],
addRecord: [],
attachmentUrl: '',
reviewTime: '',
checkResultFlag: '',
checkPersonsIdList: [],
pageNo: 1,
pageSize: 10,
id: 0,
addressContent: '',
fmData: {
gridId: '',
attachmentList: [], //图片
voiceList: [],
latitude: "",
longitude: "",
resiId: "",
happenTime: "",
content: "", //内容
address: "", //地址
namesArray: [],
AllnamesArray: [],
checkPersons: ''
},
imageUrl: '',
remarks: '', //备注
getData: '',
gridName: '',
array: ['不合格', '合格'], // 选择器的数据源
arrlist: [],
fileList: [],
companyId: '',
showPopup: false, // 控制弹出层显示/隐藏的状态
selectedOptions: [], // 选中的复选框项
selectedNames: [], //显示检察人员
// 用于存放复选框选择的结果
result: [],
// 用于存放输入框的值
newPassword: '',
uploadImageList: [],
imageId: 1,
arr: [
// {value:"1",name:'小王'},
// {value:"2",name:'李四'},
// {value:"3",name:'张三'}
],
arr1: [
// {value:"1",name:'1.车间一些软件设备出现生锈断裂情况严重'},
// {value:"2",name:'2.还有部分货运车辆已过年检。'},
],
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
console.log(options.resiId)
this.setData({
companyId: options.resiId
})
this.data.qqMapWX = new QQMapWX({
key: 'CMJBZ-4DECI-JXGGN-5B4WU-QLV2H-B5BEJ'
})
this.reverseLocation()
// this.ToaddRecord()
this.getList()
},
submitBiao() {
console.log("122131")
const currentDate = new Date();
addRecord({
companyId: this.data.companyId,
checkTime: currentDate,
checkPersonsIdList: this.data.checkPersonsIdList,
checkResultFlag: this.data.checkResultFlag,
reviewTime: this.data.reviewTime,
hiddenDangeList: this.data.hiddenDangeList,
attachmentUrls: this.data.uploadImageList,
remark: '123'
}).then(({
data
}) => {
console.log('data', data)
});
},
getList() {
securityCheckk({
pageNo: this.data.pageNo,
pageSize: this.data.pageSize,
}).then(({
data
}) => {
// console.log("123131",data.list)
this.setData({
marsi: data.list,
total: data.total
})
this.setData({
'fmData.AllnamesArray': data.list.map(item => ({
id: item.id,
name: item.name
})),
'fmData.namesArray': data.list.map(item => (item.name)),
'fmData.checkPersons': data.list.map((item, index) => ({
value: index,
name: item.checkPersons
})),
});
// console.log("123131", this.data.fmData.namesArray.map(item => item.name));
});
inspectionStaff({
orgId: App.globalData.user.agencyId,
orgType: 'agency',
pageNo: 1,
pageSize: 100
}).then(({
data
}) => {
this.setData({
arr: data.staffList
})
});
///
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
this.reverseLocation
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {},
onChange(event) {
console.log("111", event)
this.setData({
result: event.detail
});
// event.detail 为当前输入的值
console.log(this.data.result);
console.log(this.data.hiddenDangeList);
},
afterRead(event) {
const {
file
} = event.detail;
console.log(file)
// 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
wx.uploadFile({
url: 'https://example.weixin.qq.com/upload', // 仅为示例,非真实的接口地址
filePath: file.url,
name: 'file',
formData: {
user: 'test'
},
success(res) {
// 上传完成需要更新 fileList
const {
fileList = []
} = this.data;
fileList.push({
...file,
url: res.data
});
this.setData({
fileList
});
},
});
},
showPopup() {
this.setData({
showPopup: true
}); // 点击按钮显示弹出层
},
onClose() {
this.setData({
showPopup: false
}); // 关闭弹出层
},
onChange1(event) {
console.log(event)
this.setData({
selectedOptions: event.detail
});
console.log(this.data.selectedOptions)
},
confirmSelection() {
// 点击确定按钮后触发,处理选中的复选框项
console.log("选中的项:", this.data.selectedOptions);
const selectedName = this.data.selectedOptions;
this.setData({
showPopup: false,
selectedNames: selectedName
});
const matchedStaffIds = [];
this.data.arr.forEach(item => {
if (selectedName.includes(item.name)) {
matchedStaffIds.push(item.staffId);
}
});
this.setData({
checkPersonsIdList: matchedStaffIds
});
// 关闭弹出层
},
changeNewPassword(e) {
console.log("执行了")
this.setData({
newPassword: e.detail.value
});
console.log(this.data.newPassword)
},
addAnother() {
let newValue = this.data.arr1.length + 1; // 根据数组长度确定新值
let newArr = this.data.arr1.concat({
value: newValue.toString(),
name: this.data.newPassword
});
this.setData({
arr1: newArr,
newPassword: '', // 清空输入框的值
});
const nameArray = this.data.arr1.map(item => item.name);
console.log("111",nameArray)
nameArray.forEach(value => {
console.log( "qqq")
// 创建一个新的对象,设置 hazardDesc 属性为当前值
this.data.newObj = {
hazardStatus: '0', // 如果需要同时设置 hazardStatus 属性,可以在这里进行设置
hazardDesc: value
};
console.log( this.data.newObj)
// 将新对象添加到 hiddenDangeList 数组中
console.log(this.data.hiddenDangeList)
});
this.data.hiddenDangeList.push(this.data.newObj);
console.log(this.data.hiddenDangeList)
},
pickerChange: function (e) {
// 更新当前选中的索引
console.log(e.detail.value),
this.setData({
gridName: this.data.array[e.detail.value]
});
this.data.checkResultFlag = e.detail.value
console.log(this.data.gridName)
// 在这里可以根据选择的值进行相应的逻辑处理
},
pickerChange1: function (e) {
// 更新当前选中的索引
console.log(e.detail.value),
this.setData({
getData: e.detail.value
});
this.data.reviewTime = e.detail.value
console.log(this.data.getData)
// 在这里可以根据选择的值进行相应的逻辑处理
},
pickerChange2: function (e) {
// 更新当前选中的索引
this.setData({
gridNName: this.data.fmData.namesArray[e.detail.value]
});
this.data.addRecord = this.data.fmData.AllnamesArray[e.detail.value].id
},
bindRemarkInput(e) {
this.setData({
remarks: e.detail.value
});
console.log(this.data.remarks)
},
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',
// 进入到这里的方法 index是buttons中的选项的索引值
buttonClicked(index) {
console.log(index)
if (index === 0) {
wx.chooseMedia({
//具体属性看文档
count: 1, //最多选择的数量
sizeType: ['original', 'compressed'], //文件的类型
sourceType: ['camera'], //可以用进行选择拍摄
success(res) {
console.log(res);
// 将照片的长度赋值给他
let deleteLength = _this.data.uploadImageList.length
// .将this中的uploadImageList重新赋值给uploadImageList
const uploadImageList = [..._this.data.uploadImageList]
// 判断数据的大小
if (res.tempFiles[0].size <= 5 * 1024 * 1024) {
//uploadImageList
uploadImageList.push({
// 已上传关闭
uploaded: false,
// ossUrl服务器
ossUrl: {
// 获取请求中的地址
url: res.tempFiles[0].tempFilePath
},
// 图片地址
imgUrl: res.tempFiles[0].tempFilePath,
// 将data里边的imageId自动加1
imageId: ++_this.data.imageId,
//获取路径的后三位,res.tempFiles[0].tempFilePath.length - 3, 3 从第三个为值截取,截取长度为3
type: res.tempFiles[0].tempFilePath.substr(res.tempFiles[0].tempFilePath.length - 3, 3),
//格式,图片
format: "image",
// 设置标识符
name: 'wximage'
})
} else {
_this.showToast('图片上限5M,请压缩后重试~')
return false
}
// 将uploadImageList赋值给uploadImageList
_this.setData({
uploadImageList
})
// 上传到服务器
wx.uploadFile({
// 服务器的地址
url: `${config.BASEURL()}oss/file/uploadvariedfile`,
//上传的本地路径
filePath: res.tempFiles[0].tempFilePath,
//文件都相应的key
name: 'file',
// 头部标识
header: {
'Content-type': 'application/json;charset=UTF-8',
'Authorization': wx.getStorageSync('token')
},
success(fileRes) {
//不懂
console.log("执行了")
console.log(fileRes)
// 这段代码片段中 !JSON.parse(fileRes.data).data 是一个条件表达式,它用于判断 fileRes.data 中是否包含 data 属性的值。
//fileRes将json转化为一个javascript对象
if (!JSON.parse(fileRes.data).data) {
_this.showToast('图片上传失败,请重试~')
// 删除上传失败的图片
// findIndex是找到符合条件的第一个索引
const index = _this.data.uploadImageList.findIndex(item => item.imageId === _this.data.imageId)
if (index > -1) {
// 删掉splice索引为1
_this.data.uploadImageList.splice(index, 1)
//更新uploadImageList
_this.setData({
uploadImageList: _this.data.uploadImageList
})
}
} else {
// 上传uploaded为true
uploadImageList[uploadImageList.length - 1].uploaded = true
// ossUrl为data
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
})
console.log(uploadImageList)
} else {
_this.showToast('图片上限5M,请压缩后重试~')
}
})
_this.setData({
uploadImageList: [..._this.data.uploadImageList, ...uploadImageList]
})
console.log(_this.data.uploadImageList)
console.log(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():当用户点击了破坏性按钮(如果有)时触发的回调函数。破坏性按钮通常用于执行一些危险操作,比如删除或者清除数据等。
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
})
}
},
//跳转地图选点
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);
}
})
},
//
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)
}
})
},
})