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.

282 lines
10 KiB
Plaintext

11 months ago
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>wps表单222</title>
<script src="../Scripts/jquery-1.11.0.min.js" type="text/javascript"></script>
<!--通用的JS-->
<script src="../Scripts/config.js" type="text/javascript"></script>
<script src="../Scripts/QueryString.js" type="text/javascript"></script>
<script src="../Comm/Gener.js" type="text/javascript"></script>
<script src="JS/wpslib/project.js"></script>
<script src="JS/wpslib/wpsjsrpcsdk.js"></script>
<script type="text/javascript">
var wpsData = [];
var wpsTempURL = "";
var childDatas = [];
var frmID = GetQueryString("FrmID");
var oid = GetQueryString("WorkID");
//初始化函数
$(function () {
webUser = new WebUser();
var handler = new HttpHandler("BP.WF.HttpHandler.WF_CCForm");
handler.AddUrlData();
var data = handler.DoMethodReturnString("WpsFrm_Init");
if (data.indexOf('err@') == 0) {
alert('装载表单出错,请查看控制台console,或者反馈给管理员.' + data);
console.log(data);
return;
}
var url1 = document.location.host;
wpsTempURL = document.location.protocol + "//" + url1 + data;
$("#docs").html("模板路径:" + data);
//表单模板与表单数据.
var data = handler.DoMethodReturnString("FrmGener_Init");
if (data.indexOf('err@') == 0) {
alert('装载表单出错,请查看控制台console,或者反馈给管理员.' + data);
console.log(data);
return;
}
var frmData;
try {
frmData = JSON.parse(data);
}
catch (err) {
alert(" frmData数据转换JSON失败:" + data);
console.log(data);
return;
}
//所有的数据,都在 frmData里面MainTable 是主表的数据.
console.log(frmData);
var dataMain = frmData.MainTable[0];
for (var i in dataMain) {
var json =
{
"name": i,
"text": dataMain[i],
"type": "text"
};
var textV = getFiledValue(frmData.Sys_MapAttr, i, dataMain[i]);
if (textV) {
json.text = textV;
}
wpsData.push(json);
//json.name=
console.log(i, ":", json.text);
}
// $("#docs").html("数据:" + data);
frmID = GetQueryString("FrmID");
if (frmID == null)
frmID = GetQueryString("FK_MapData");
oid = GetQueryString("OID");
if (oid == 0)
oid = GetQueryString("WorkID");
//生成从表数据.
GenerMapDtls(frmData, oid, frmID);
var paras = "";
paras += "&FID=" + GetQueryString("FID");
paras += "&FK_Flow=" + GetQueryString("FK_Flow");
paras += "&FK_Node=" + GetQueryString("FK_Node");
paras += "&PWorkID=" + GetQueryString("PWorkID");
paras += "&WorkID=" + oid;
paras += "&OID=" + oid;
paras += "&FrmID=" + frmID;
paras += "&FK_MapData=" + frmID;
var html = "<a href='FrmGener.htm?1=1" + paras + "' >打开原始数据傻瓜表单</a>";
$("#url").html(html);
html = "在线打开-张关勇解析.";
$("#onlineOpen").html(html);
if (data.indexOf('err@') == 0) {
alert('装载表单出错,请查看控制台console,或者反馈给管理员.' + data);
console.log(data);
return;
}
//打开文件.
//fillTemplate();
});
//替换从表数据.
function GenerMapDtls(frmData, oid, frmID) {
var paras = "";
paras += "&RefPKVal=" + oid;
paras += "&IsReadonly=" + GetQueryString("IsReadonly");
paras += "&FrmType=" + GetQueryString("FrmType");
paras += "&FK_MapData=" + frmID;
paras += "&WorkID=" + oid;
paras += "&FK_Flow=" + GetQueryString("FK_Flow");
paras += "&FK_Node=" + GetQueryString("FK_Node");
paras += "&FID=" + GetQueryString("FID");
paras += "&PWorkID=" + GetQueryString("PWorkID");
//Dtl2017.htm?EnsName=Frm_CeShiShaGuaBiaoDANDtl1&RefPKVal=100&FK_MapData=Frm_CeShiShaGuaBiaoDAN&IsReadonly=0
// & 1=2 & t=0.687951661159741 & FK_MapData=Frm_CeShiShaGuaBiaoDAN & WorkID=100 & FK_Flow=001 & FK_Node=101 & FID=0 &
// PWorkID=0 & Version=1 & FrmType=0
//获得从表数据集合.
var mapDtls = frmData["Sys_MapDtl"];
for (var i = 0; i < mapDtls.length; i++) {
var mapDtl = mapDtls[i];
var handler = new HttpHandler("BP.WF.HttpHandler.WF_CCForm");
handler.AddUrlData(paras);
handler.AddPara("EnsName", mapDtl.No);
var data = handler.DoMethodReturnString("Dtl_Init");
if (data.indexOf('err@') == 0) {
alert('装载表单出错,请查看控制台console,或者反馈给管理员.' + data);
console.log(data);
return;
}
var frmDtlData;
try {
frmDtlData = JSON.parse(data);
// childDatas.push(frmDtlData.DBDtl);
var json =
{
"name": "NianFen",
"data": frmDtlData.DBDtl,
"type": "table"
};
wpsData.push(json);
// groupArr(frmDtlData.DBDtl, "NianFen");
}
catch (err) {
alert(" frmData数据转换JSON失败:" + data);
console.log(data);
return;
}
console.log(frmDtlData);
//handler.AddPara(paras, mapDtl.No);
}
}
function groupArr(list, field) {
// debugger;
var fieldList = [], att = [];
list.map((e) => {
fieldList.push(e[field])
})
//数组去重
fieldList = fieldList.filter((e, i, self) => {
return self.indexOf(e) == i
})
for (var j = 0; j < fieldList.length; j++) {
//过滤出匹配到的数据
var arr = list.filter((e) => {
return e[field] == fieldList[j];
})
att.push({
type: arr[0][field],
list: arr
})
}
return att;
}
/* 处理值方法 */
function getFiledValue(Sys_MapAttr, filedName, rvalue) {
var value;
for (var i in Sys_MapAttr) {
if (filedName == Sys_MapAttr[i].KeyOfEn) {
if (Sys_MapAttr[i].MyDataType == "4") {//布尔
if (rvalue == "1") {//是
value = "是";
} else if (rvalue == "0") {//否
value = "否";
}
}
}
}
return value;
}
/* 调用的方法 */
function fillTemplate() {
// var filePath = GetDemoPath("样章2.docx");
//var filePath = prompt("请输入打开文件路径本地或是url", GetDemoPath("样章.docx"))
// var uploadPath = "BP.WF.Dev2Interface.UploadFile"
var uploadPath = dynamicHandler + "?DoType=HttpHandler&DoMethod=WpsFrm_SaveFile&HttpHandlerName=BP.WF.HttpHandler.WF_CCForm&FrmID=" + frmID + "&WorkID=" + oid;
var uploadFieldName = "fileField";
var invokeParam = {
"fileName": wpsTempURL,
"templateDataUrl": wpsData,
"childDatas": childDatas,
"uploadPath": uploadPath, // 保存文档上传接口
//"fileName": filePath,
"uploadFieldName": uploadFieldName,
"userName": "东方不败"
}; //根据需求任意定义
WpsInvoke.InvokeAsHttp(
projInfo.type,
projInfo.name, //wps加载项的名字在实际项目中写上对应的名字
"OpenDoc", //要调用的在wps加载项中的函数名
JSON.stringify(invokeParam), //调用的在wps加载项中的函数要传递的数据是一个json对象根据业务系统需求任意定义
callbackFunc, //回调函数wps加载项中InvokeFromSystemDemo这个函数的返回值作为这个函数的参数
true) //设置wps是否显示到最前面来
//OpenDoc(param);
}
var callbackFunc = function (result) {
if (result.status == 0) {
//下面这行代码用来注册从wps加载项返回的消息的接收函数
WpsInvoke.RegWebNotify(projInfo.type, projInfo.name, function (messageText) {
var span = document.getElementById("webnotifyspan")
span.innerHTML = "(次数:" + ++WebNotifycount + ")" + messageText;
})
// alert(result.response)
}
}
function SaveFile()
{
var url = dynamicHandler + "?DoType=HttpHandler&DoMethod=WpsFrm_SaveFile&HttpHandlerName=BP.WF.HttpHandler.WF_CCForm&FrmID=xxx&WorkID=xxx";
}
</script>
</head>
<body>
<br />
<br />
<form id="cc">
<fieldset>
<legend>处理表单</legend>
<ul>
<li> <div id="url" name="url" /></li>
<li> <div id="onlineOpen" name="onlineOpen" /></li>
<li> <div id="docs" name="docs" /></li>
</ul>
<legend>Wps插件安装说明</legend>
<ul>
<li>该插件是一个ccflow开发的wps插件。</li>
</ul>
<li><a href="#" onclick="fillTemplate()">模板</a></li>
</fieldset>
</form>
</body>
</html>