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.

606 lines
16 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

const app = getApp(),
Api = require("../../../../utils/util.js");
const { API_MONIT_URL,API_BASE_URL,UP_MONIT_IMG } = require('../../../../api/api')
Page({
data: {
API_MONIT_URL: API_MONIT_URL,
API_BASE_URL: API_BASE_URL,
UP_MONIT_IMG: UP_MONIT_IMG,
currentTab: 0,
tab: ['服务反馈', '物料信息', '基本信息'],
measuresList: [],
measures: '',
stationName: '',
category: '',
categoryList: ['电表箱', '支架', '并网箱', '组件','逆变器'],
applianceBrand: '',
applianceBarcode: '',
typeList: ['保内', '保外'],
backSay: '',
mileage: '',
imgName1: [],
brandList: [],//设备品牌
useFitting: [],
applyFitting: [],
servTypeList: [],
serviceTypeName: ''
},
// 点击切换工单
swichNav: function(e) {
this.setData({
currentTab: e.currentTarget.dataset.current
})
},
onLoad: function(options) {
var that = this;
wx.showLoading({
title: '加载中...',
})
that.setData({
status: options.status,
id: options.id,
imgUrl: app.globalData.imgUrl,
})
//基本信息
Api.req('sf/operationOrder/detail', {
id: options.id
}, 'get').then(res => {
wx.hideLoading()
if(res.code == 200){
res.data.bdImgs = res.data.bdImgs.split(',');
var basic = res.data;
that.setData({
basic: basic,
category: basic.applianceCategory, //设备类型
applianceBrand: basic.applianceBrand, //设备品牌
applianceBarcode: basic.applianceBarcode, //设备序列号
date: basic.putIntoTime.slice(0, 10), //投运时间
type: basic.warrantyType?that.data.typeList[Number(basic.warrantyType) - 1]:'', //保修类型
warrantyType: basic.warrantyType, //保修类型
serviceType: basic.serviceType, //服务类型
serviceTypeName: basic.serviceTypeName, //服务类型
measuresId: basic.serviceMeasures, //服务措施ID
measures: basic.serviceMeasuresName, //服务措施
})
that.getList()
}
})
this.getBrandList()
this.getServiceMeasures()
this.getServiceType()
},
//设备品牌
getBrandList(){
Api.req('sf/operationOrderCallback/getAllBrand', {
// orderId: options.id
}, 'get')
.then(res => {
if(res.code == 200){
this.setData({
brandList: res.data,
})
}
})
},
//服务措施
getServiceMeasures(){
Api.req('sf/operationServiceMeasures/list', {
// orderId: options.id
}, 'get')
.then(res => {
if(res.code == 200){
this.setData({
measuresList: res.data.records,
})
}
})
},
//服务类型
getServiceType(){
Api.req('sf/operationServiceType/list', {}, 'get')
.then(res => {
if(res.code == 200){
this.setData({
servTypeList: res.data,
})
}
})
},
//电站名称
stationName: function(e) {
this.setData({
stationName: e.detail.value
})
},
//设备类型
category: function(e) {
this.setData({
category: this.data.categoryList[e.detail.value],
})
},
//设备品牌
applianceBrand: function(e) {
this.setData({
applianceBrand: this.data.brandList[e.detail.value].name,
applianceBrandId: this.data.brandList[e.detail.value].id
})
},
//设备S/N
applianceBarcode: function(e) {
this.setData({
applianceBarcode: e.detail.value
})
},
//保修类型
type: function(e) {
let index = Number(e.detail.value);
this.setData({
type: this.data.typeList[index],
warrantyType: String(index + 1)
})
},
//服务类型
servType: function(e) {
let index = Number(e.detail.value);
this.setData({
serviceType: this.data.servTypeList[index].id,
serviceTypeName: this.data.servTypeList[index].name
})
},
//投运时间
date: function(e) {
this.setData({
date: e.detail.value
})
},
//服务措施选择
measures: function(e) {
this.setData({
measures: this.data.measuresList[e.detail.value].serviceMeasures,
measuresId: this.data.measuresList[e.detail.value].id
})
},
//反馈内容
backSay: function(e) {
this.setData({
backSay: e.detail.value
})
},
//销售商
seller: function(e) {
this.setData({
seller: e.detail.value
})
},
//发票号
bill: function(e) {
this.setData({
bill: e.detail.value
})
},
//产品名称
pro_name: function(e) {
this.setData({
pro_name: e.detail.value
})
},
//规格型号
typeModel: function(e) {
this.setData({
typeModel: e.detail.value
})
},
//机身编码
code: function(e) {
this.setData({
code: e.detail.value
})
},
/**
*
* 上传图片
*
* @param {*} e
*/
afteruploadPhotoRead(e) {
const type = e.currentTarget.dataset.type
const name = e.currentTarget.dataset.name
if (Array.isArray(e.detail.file)) { //多张
var count = 0;
this.afteruploadPhotoReadS(e, count)
return
}
const {
file
} = e.detail;
const img = file.url;
wx.showLoading({
title: '上传中',
})
var that = this
wx.uploadFile({
url: that.data.UP_MONIT_IMG,
filePath: file.url,
header:{
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Basic c2FiZXIzOnNhYmVyM19zZWNyZXQ=',
'Blade-Requested-With':'BladeHttpRequest',
'Tenant-Id': '000000',
'Blade-Auth': 'bearer ' + wx.getStorageSync('TOKEN'),
},
name: 'file',
complete: function (res) {
console.log("上传图片", res)
var imgData = JSON.parse(res.data)
wx.hideLoading()
if (res.statusCode == 200) {
wx.showToast({
title: '选择成功',
icon: 'none',
})
var item = {
url: "",
name: "",
}
item.url = img;
item.name = imgData.data.name;
that.data[name].push(item)
that.setData({
[`${name}`]: that.data[name]
})
} else {
wx.showToast({
title: '选择失败',
icon: 'error'
})
}
}
})
},
/** 上传多张图片递归 **/
afteruploadPhotoReadS(e, count) {
let ob = {
name: '',
url: '',
}
const name = e.currentTarget.dataset.name
wx.showLoading({
title: '加载第' + (count + 1) + '张照片中',
mask: true,
})
const element = e.detail.file[count];
var that = this;
wx.uploadFile({
url: that.data.UP_MONIT_IMG,
filePath: element.url,
header:{
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Basic c2FiZXIzOnNhYmVyM19zZWNyZXQ=',
'Blade-Requested-With':'BladeHttpRequest',
'Tenant-Id': '000000',
'Blade-Auth': 'bearer ' + wx.getStorageSync('TOKEN'),
},
name: 'file',
success(res) {
wx.hideLoading()
var imgData = JSON.parse(res.data)
if (res.statusCode == 200) {
count = count + 1;
ob.name = imgData.data.name
ob.url = element.url
that.data[name].push(ob);
that.setData({
[`${name}`]: that.data[name]
})
if (count == e.detail.file.length) {
wx.showToast({
title: '选择成功',
icon: 'none'
})
} else {
that.afteruploadPhotoReadS(e, count)
}
} else {
wx.showToast({
title: '选择失败',
icon: 'error'
})
}
}
})
},
//上传图片
uploadImg: function(maxNum, imgName, cb) {
var that = this,
maxNum = maxNum;
wx.chooseImage({
count: maxNum - that.data.img.length,
sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],
success(res) {
const tempFilePaths = res.tempFilePaths;
var imgList = that.data.imgList.concat(tempFilePaths),
getImg = imgName;
for (var i = 0; i < imgList.length; i++) {
wx.showLoading({
title: '图片上传中...',
mask: true
})
wx.uploadFile({
url: that.data.url + 'common/weChat/uploadImage',
filePath: imgList[i],
name: 'file', //在FILE请求中图片存储在img字段中
success: function(res) {
if (getImg.length < maxNum) {
getImg.push(res.data)
var imgs = getImg
that.setData({
imgs
})
typeof cb == 'function' && cb(that)
}
wx.hideLoading()
},
fail: function(res) {
wx.showToast({
title: 'error!',
icon: 'none',
image: '/img/error.png'
})
},
})
}
}
})
},
//删除上传图片
deleteImg: function(e) {
const name = e.currentTarget.dataset.name
const index = e.detail.index //删除图片的下标
this.data[name].splice(index, 1);
this.setData({
[`${name}`]: this.data[name]
})
},
//提交
submit: function(e) {
var that = this;
var type = e.currentTarget.dataset.type
if(type == '1'){//服务完成全必填
if(this.data.applianceBrand == ''){
wx.showToast({
title: '设备品牌不能为空',
icon: 'none'
})
return
}else if(this.data.applianceBarcode ==''){
wx.showToast({
title: '设备S/N不能为空',
icon: 'none'
})
return
}else if(this.data.type == ''){
wx.showToast({
title: '保修类型不能为空',
icon: 'none'
})
return
}else if(this.data.serviceType == ''){
wx.showToast({
title: '服务类型不能为空',
icon: 'none'
})
return
}else if(this.data.measures == ''){
wx.showToast({
title: '服务措施不能为空',
icon: 'none'
})
return
}else if(this.data.backSay ==''){
wx.showToast({
title: '反馈内容不能为空',
icon: 'none'
})
return
}else if(this.data.imgName1.length==0){
wx.showToast({
title: '过程照片不能为空',
icon: 'none'
})
return
}
}else{
if(this.data.backSay ==''){
wx.showToast({
title: '反馈内容不能为空',
icon: 'none'
})
return
}else if(this.data.imgName1.length==0){
wx.showToast({
title: '过程照片不能为空',
icon: 'none'
})
return
}
}
wx.showLoading({
title: '提交中...',
mask: true
})
var data = {
orderId: this.data.id,
applianceBrand: this.data.applianceBrand, //品牌
applianceBarcode: this.data.applianceBarcode,//设备S/N
warrantyType: this.data.warrantyType,//保修类型
serviceType: this.data.serviceType,//服务类型
putIntoTime: this.data.date, //投运时间
serviceMeasures: this.data.measuresId, //服务措施
feedbackImg: this.data.imgName1.length > 0 ? this.data.imgName1.map(itm=>itm.name).join(",") : "",//过程图片
feedbackType: type,//反馈类型0 过程反馈 1服务完成反馈 2服务无法完成反馈
feedback: this.data.backSay, //反馈内容
}
// console.log("执行",data);
// return
Api.req('sf/operationOrderFeedback/save', data, 'post', '','1')
.then(res => {
wx.hideLoading()
if (res.code == '200') {
wx.showToast({
title: '操作成功',
})
var page = getCurrentPages();
let prevPage = page[page.length - 2];
setTimeout(function() {
prevPage.getNum();
prevPage.getOrder();
wx.navigateBack({})
}, 1000)
} else {
wx.showToast({
title: res.msg,
icon: 'none',
mask: true
})
}
})
},
//设备列表
goDevice(){
wx.navigateTo({
url: '../../deviceList/deviceList?id=' + this.data.basic.entryId,
})
},
//反馈记录
backRecord: function(e) {
wx.navigateTo({
url: '../backDetail/backDetail?id=' + e.currentTarget.dataset.id + '&type=' + e.currentTarget.dataset.type
})
},
//物料信息
getDetail(e){
let type = e.currentTarget.dataset.type
if(type == '1'){//物料使用详情
wx.navigateTo({
url: '../../materialDetail/materialDetail?id=' + e.currentTarget.dataset.id + '&title=已用物料'
})
}else{//物料申请详情
wx.navigateTo({
url: '../../addMaterial/addMaterial?id=' + e.currentTarget.dataset.id + '&title=详情'
})
}
},
//使用物料
getUseList(e){
wx.navigateTo({
url: '../../materialUse/materialUse?orderId=' + this.data.basic.id
})
},
//申请物料
goAddApply(e){
wx.navigateTo({
url: '../../addMaterial/addMaterial?orderId=' + this.data.basic.id + '&title=新增物料申请'
})
},
//编辑申请物料
editList(e){
wx.navigateTo({
url: '../../addMaterial/addMaterial?id='+ e.currentTarget.dataset.id +'&orderId=' + this.data.basic.id + '&title=编辑'
})
},
//领取
getReceive(e){
let that = this
let id = e.currentTarget.dataset.id
wx.showModal({
title: '提示',
content: '是否确认领取该物料?',
complete: (res) => {
if (res.confirm) {
wx.showLoading({
title: '加载中...',
})
Api.req('blade-platformFittingApply/platformFittingApply/empReceiveMate', {
id: id
}, 'get').then(res => {
wx.hideLoading()
if(res.code == 200){
wx.showToast({
title: '操作成功',
})
setTimeout(()=>{
that.getList();
},500)
}
})
}
}
})
},
//物料信息列表
getList: function () {
var that = this
wx.showLoading({
title: '加载中...',
})
Api.req('blade-operationOrderMaterial/operationOrderMaterial/materialListRelateOrder', {
orderId: this.data.basic.id
}, 'get').then(res => {
wx.hideLoading()
if(res.code== 200){
this.setData({
useFitting: res.data.useFitting, //使用物料
applyFitting: res.data.applyFitting, //申请物料
})
}else{
wx.showToast({
title: res.errMsg,
icon: 'none'
})
}
})
},
//删除物料
delList(e){
let that = this
let id = e.currentTarget.dataset.id
let type = e.currentTarget.dataset.type
let url = ''
if(type == '1'){
url = 'blade-operationOrderMaterial/operationOrderMaterial/deleteUserFitting' //删除使用
}else{
url = 'blade-operationOrderMaterial/operationOrderMaterial/deleteApplyFitting' //删除申请
}
wx.showModal({
title: '提示',
content: '是否确认删除该物料?',
complete: (res) => {
if (res.confirm) {
wx.showLoading({
title: '加载中...',
})
Api.req(url, {
id: id
}, 'get').then(res => {
wx.hideLoading()
if(res.code == 200){
wx.showToast({
title: '删除成功',
})
setTimeout(()=>{
that.getList();
},500)
}
})
}
}
})
}
})