You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

447 lines
19 KiB
Plaintext

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.

/*!
* ======================================================
* FeedBack Template For MUI (http://dev.dcloud.net.cn/mui)
* =======================================================
* @version:1.0.0
* @author:cuihongbao@dcloud.io
*/
(function () {
var index = 0;
var size = null;
var imageIndexIdNum = 0;
var starIndex = 0;
var feedback = {
imageLists: document.getElementsByName('image-list')
};
var url = 'https://service.dcloud.net.cn/feedback';
var doMethod = "MoreAttach";
var httpHandlerName = "BP.WF.HttpHandler.WF_CCForm";
if (plant == 'CCFlow') {
Url = dynamicHandler + "?DoType=HttpHandler&DoMethod=" + doMethod + "&HttpHandlerName=" + httpHandlerName + "&FK_FrmAttachment=" + GetQueryString("FK_FrmAttachment") + "&PKVal=" + GetQueryString("PKVal") + "&t=" + new Date().getTime();
} else {
var currentPath = GetHrefUrl();
var path = currentPath.substring(0, currentPath.indexOf('/WF') + 1);
var url = path + "/WF/Ath/AttachmentUpload.do/?FK_FrmAttachment=" + GetQueryString("FK_FrmAttachment") + "&PKVal=" + GetQueryString("PKVal");
}
//初始化获取所上传的文件
feedback.files = [];
feedback.uploader = null;
feedback.deviceInfo = null;
mui.plusReady(function () {
//设备信息,无需修改
feedback.deviceInfo = {
appid: plus.runtime.appid,
imei: plus.device.imei, //设备标识
images: feedback.files, //图片文件
p: mui.os.android ? 'a' : 'i', //平台类型i表示iOS平台a表示Android平台。
md: plus.device.model, //设备型号
app_version: plus.runtime.version,
plus_version: plus.runtime.innerVersion, //基座版本号
os: mui.os.version,
net: '' + plus.networkinfo.getCurrentType()
}
});
/**
*情况附件信息
*/
feedback.clearAthFile = function () {
for (var athIndex = 0; athIndex < feedback.imageLists.length; athIndex++) {
feedback.imageLists[athIndex].innerHTML = '';
}
feedback.files = [];
};
feedback.getFileInputArray = function () {
return [].slice.call(feedback.imageList.querySelectorAll('.file'));
};
feedback.addFile = function (athDB, athIndex, athIndex_index) {
feedback.files.push({
name: "images-" + athIndex + "-" + athIndex_index,
path: athDB.FileFullName,
id: "img-" + athIndex + "-" + athIndex_index,
myPk: athDB.MyPK,
FileExts: athDB.FileExts,
FileName: athDB.FileName,
Rec: athDB.Rec,
FK_FrmAttachment: athDB.FK_FrmAttachment,
NoOfObj: athDB.NoOfObj
});
//index++;
};
function handleDelete(closeButton, file) {
var btnArray = ['否', '是'];
var id = this.id;
var indx = id.substring(0, id.lastIndexOf("-")).replace("img-", "");
indx = parseInt(indx);
mui.confirm('您确定要删除吗? ', '提示', btnArray, function (e) {
if (e.index == 1) {
for (var temp = 0; temp < feedback.files.length; temp++) {
if (feedback.files[temp].id == closeButton.id) {
//处理删除事件
var handler = new HttpHandler("BP.WF.HttpHandler.WF_CCForm");
handler.AddPara("DelPKVal", file.myPk);
var data = handler.DoMethodReturnString("AttachmentUpload_Del");
if (data == "删除成功.") {
placeholder = document.getElementById(file.myPk);
feedback.files.splice(temp, 1);
feedback.imageLists[indx].removeChild(placeholder);
}
}
}
}
});
return false;
}
feedback.initFile = function (ath, FK_FrmAttachment, athIndex, athIndex_imageIndexIdNum, noOfObj) {
var data = GetAllAttachments(ath);
var athIndex_index = 0;
var athIndex_imageIndexIdNum = 0
$.each(data, function (i, obj) {
feedback.addFile(obj, athIndex, athIndex_index);
athIndex_index++;
});
//判断当前是可读还是可编辑
var IsRead = pageData.IsReadOnly == "1" ? true : false;
//显示上传的文件
$.each(feedback.files, function (index, element) {
var f = feedback.files[index];
if (f.NoOfObj != noOfObj)
return;
athIndex_imageIndexIdNum++;
var placeholder = document.createElement('div');
placeholder.setAttribute('id', f.myPk);
placeholder.setAttribute('class', 'image-item');
var divButton = document.createElement('div');
divButton.style.width = '100%';
divButton.style.height = '100%';
if (IsRead == false) {
var IsDelete = false;
//删除所有
if (ath.DeleteWay == 1)
IsDelete = true;
//只删除自己的
if (ath.DeleteWay == 2) {
if (f.Rec == new WebUser().No)
IsDelete = true;
}
if (IsDelete) {
//删除图片
var closeButton = document.createElement('div');
closeButton.setAttribute('class', 'image-close');
closeButton.innerHTML = 'X';
closeButton.id = f.id;
//小X的点击事件
// closeButton.addEventListener('click', handleDelete.bind(this, closeButton, f), false);
closeButton.addEventListener('tap', handleDelete.bind(this, closeButton, f), false);
placeholder.appendChild(closeButton);
}
}
//点击图片标记的时候下载文件.
if (ath.IsDownload == 1) {
divButton.addEventListener('click', function (event) {
//处理文件下载事件
downLoad(f.myPk, f.path);
});
}
var imgFlag = IsImgeExt(f.FileExts);
if (imgFlag) {
var base64 = "";
dataUrl = GetFileStream(f.myPk);
} else {
dataUrl = './image/FileType/' + f.FileExts + "B.gif";
}
//divButton.style.backgroundImage='url(' + dataUrl + ')';
placeholder.style.backgroundImage = 'url(' + dataUrl + ')';
placeholder.appendChild(divButton);
//文件名称显示
var nameLabel = document.createElement('div');
nameLabel.setAttribute('class', 'image-name');
nameLabel.id = "name-" + athIndex + "-" + index;
nameLabel.innerHTML = "<p style='text-align:center;width:63.4px;margin:0;padding:0'>" + f.FileName.split(".")[0] + "</p>";
if (f.FileName.split(".")[0].length > 10)
nameLabel.innerHTML = "<p style='width:63.4px;margin:0;padding:0'>" + f.FileName.split(".")[0].substr(0, 6) + "...</p>";
placeholder.appendChild(nameLabel);
feedback.imageList.appendChild(placeholder);
});
}
/**
* 初始化上传文件页面
*/
feedback.initPage = function () {
for (var athIndex = 0; athIndex < feedback.imageLists.length; athIndex++) {
feedback.imageList = feedback.imageLists[athIndex];
//组件Id
imageId = feedback.imageList.id;
//获取所属分组的ID
var mypk = imageId.substr(11);
imageId = imageId.replace("_" + pageData.FK_Node, "");
//获取NoOfObj
var index = imageId.lastIndexOf("_");
var noOfObj = imageId.substr(index + 1);
feedback.newPlaceholder(mypk, athIndex, noOfObj);
}
}
/**
* 初始化图片域占位
*/
feedback.newPlaceholder = function (FK_FrmAttachment, athIndex, noOfObj) {
var fileInputArray = feedback.getFileInputArray();
if (fileInputArray &&
fileInputArray.length > 0 &&
fileInputArray[fileInputArray.length - 1].parentNode.classList.contains('space')) {
return;
}
;
var ath = new Entity("BP.Sys.FrmAttachment", FK_FrmAttachment);
var athIndex_imageIndexIdNum = 0;
//初始化显示上传的文件
feedback.initFile(ath, FK_FrmAttachment, athIndex, athIndex_imageIndexIdNum, noOfObj);
//如果是只读的可以返回
if (pageData.IsReadOnly == "1" || ath.IsUpload == false)
return;
//添加上传的控件
athIndex_imageIndexIdNum++;
var placeholder = document.createElement('div');
placeholder.setAttribute('class', 'image-item space');
//删除图片
var closeButton = document.createElement('div');
closeButton.setAttribute('class', 'image-close');
closeButton.innerHTML = 'X';
// closeButton.id = "img-" + athIndex_imageIndexIdNum;
//小X的点击事件
closeButton.addEventListener('tap', function (event) {
setTimeout(function () {
for (var temp = 0; temp < feedback.files.length; temp++) {
if (feedback.files[temp].id == closeButton.id) {
feedback.files.splice(temp, 1);
//处理删除事件
Del(feedback.files[temp].myPk);
}
}
feedback.imageList.removeChild(placeholder);
}, 0);
return false;
}, false);
//添加图片上传控件 input
if (/MicroMessenger/i.test(window.navigator.userAgent)) {
var fileInput = document.createElement('div');
$(fileInput).addClass("WX_AddFile");
placeholder.appendChild(closeButton);
placeholder.appendChild(fileInput);
feedback.imageList.appendChild(placeholder);
$(fileInput).on("click", function () {
// alert("进入方法")
WXUpload(FK_FrmAttachment, feedback);
})
} else {
var fileInput = document.createElement('input');
fileInput.setAttribute('type', 'file');
fileInput.setAttribute('accept', '*/*');
fileInput.setAttribute('multiple', true);
fileInput.setAttribute('id', 'image-' + athIndex_imageIndexIdNum);
fileInput.addEventListener('change', function (event) {
var self = this;
var index = (this.id).substr(-1);
var file = fileInput.files[0];
if (file) {
//获取文件的名称
var name = file.name;
//获取文件的扩展名
var ext = name.substr(name.lastIndexOf('.') + 1);
//控制上传文件大小
//if (size > (10*1024*1024)) {
// return mui.toast('文件超大,请重新选择~');
//}
if (!this.parentNode.classList.contains('space')) { //已有图片
feedback.files.splice(index - 1, 1, { name: "images" + index, path: e });
}
}
//处理文件上传
var IsUpSuccess = uploadFile(fileInput.files, FK_FrmAttachment.replace("_" + pageData.FK_Node, ""));
//如果上传成功后处理事件
if (IsUpSuccess) {
feedback.clearAthFile();
feedback.initPage();
}
}, false);
placeholder.appendChild(closeButton);
placeholder.appendChild(fileInput);
feedback.imageList.appendChild(placeholder);
}
};
//feedback.newPlaceholder();
feedback.initPage();
})();
function WXUpload(athMyPK, feedback) {
//引入微信jshttps://res.wx.qq.com/open/js/jweixin-1.6.0.js
//Skip.addJs("https://res.wx.qq.com/open/js/jweixin-1.6.0.js");
//Skip.addJs("https://res2.wx.qq.com/open/js/jweixin-1.6.0.js");
var handler = new HttpHandler("BP.WF.HttpHandler.CCMobile_CCForm");
var url = GetHrefUrl().split('#')[0];
handler.AddPara("htmlPage", url);
var data = handler.DoMethodReturnString("GetWXGZHConfigSetting");
if (data.indexOf("err@") != -1) {
alert(data);
return false;
}
var pushData = JSON.parse(data);
var appId = pushData.AppID;
var timestamp = pushData.timestamp;
var nonceStr = pushData.nonceStr;
var signature = pushData.signature;
wx.config({
debug: false,
appId: appId,
timestamp: timestamp,
nonceStr: nonceStr,
signature: signature,
jsApiList: [
// 所有要调用的 API 都要加到这个列表中
'chooseImage',
'previewImage',
'uploadImage',
'downloadImage'
]
});
wx.ready(function () {
wx.checkJsApi({
jsApiList: [
'chooseImage',
'previewImage',
'uploadImage',
'downloadImage'
],
success: function (res) {
//alert(JSON.stringify(res));
//alert(JSON.stringify(res.checkResult.getLocation));
if (res.checkResult.getLocation == false) {
alert('你的微信版本太低不支持微信JS接口请升级到最新的微信版本');
return;
} else {
wxChooseImage(athMyPK, feedback);
}
}
});
});
wx.error(function (res) {
// config信息验证失败会执行error函数如签名过期导致验证失败具体错误信息可以打开config的debug模式查看也可以在返回的res参数中查看对于SPA可以在这里更新签名。
alert("验证失败,请重试!");
alert(JSON.stringify(res));
wx.closeWindow();
});
};
var images = {
localId: [],
serverId: []
};
function dataURLtoFile(dataurl, filename) {
var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new File([u8arr], filename, { type: mime });
}
//拍照或从手机相册中选图接口
function wxChooseImage(athMyPK, feedback) {
wx.chooseImage({
success: function (res) {
debugger;
console.log('choose image callback', res);
images.localId = res.localIds;
//alert('已选择 ' + res.localIds.length + ' 张图片');
if (images.localId.length == 0) {
alert('请先使用 chooseImage 接口选择图片');
return;
}
var i = 0, length = images.localId.length;
images.serverId = [];
function upload(athMyPK, feedback) {
//图片上传
wx.uploadImage({
localId: images.localId[i],
success: function (res) {
i++;
images.serverId.push(res.serverId);
//图片上传完成之后进行图片的下载图片上传完成之后会返回一个在腾讯服务器的存放的图片的ID--->serverId
wx.downloadImage({
serverId: res.serverId, // 需要下载的图片的服务器端ID由uploadImage接口获得
isShowProgressTips: 1, // 默认为1显示进度提示
success: function (res) {
var localId = res.localId; // 返回图片下载后的本地ID
//通过下载的本地的ID获取的图片的base64数据通过对数据的转换进行图片的保存
wx.getLocalImgData({
localId: localId, // 图片的localID
success: function (res) {
console.log(res);
var localData = res.localData; // localData是图片的base64数据
if (localData.indexOf('data:image') != 0) {
//判断是否有这样的头部
localData = 'data:image/jpeg;base64,' + localData
}
localData = localData.replace(/\r|\n/g, '').replace('data:image/jgp', 'data:image/jpeg');
var file = dataURLtoFile(localData, Date.now() + '.jpg');
var handler = new HttpHandler("BP.WF.HttpHandler.CCMobile_CCForm");
handler.AddPara("AttachPK", athMyPK);
handler.AddPara("WorkID", GetQueryString("WorkID"));
handler.AddPara("PKVal", GetQueryString("WorkID"));
handler.AddFile(file);
//handler.AddPara("ImageData", localData);
/*console.log(encodeURIComponent(localData))*/
var data = handler.DoMethodReturnString("WXGZH_AthUpload");
if (data.indexOf("err@") != -1) {
//mui.alert("上传失败");
console.error('上传失败')
}
if (i == length) {
feedback.clearAthFile();
feedback.initPage();
}
}
});
}
});
if (i < length) {
upload(athMyPK, feedback);
} else {
//alert("初始化页面");
//feedback.initPage();
}
},
fail: function (res) {
alert(JSON.stringify(res));
}
});
}
upload(athMyPK, feedback);
}
});
}