2023-06-27

This commit is contained in:
李鹏飞 2023-06-27 15:24:13 +08:00
parent 1acdf08555
commit f4a243741c
8 changed files with 439 additions and 1 deletions

Binary file not shown.

View File

@ -0,0 +1,295 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="OnlineEditing.aspx.cs" Inherits="FineUIPro.Web.AttachFile.OnlineEditing" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="icon" href="/favicon.ico" type="image/x-icon" />
<title>
Spire.Office
</title>
<style>
html {
height: 100%;
width: 100%;
}
body {
background: #fff;
color: #333;
font-family: Arial, Tahoma, sans-serif;
font-size: 12px;
font-weight: normal;
height: 100%;
margin: 0;
overflow-y: hidden;
padding: 0;
text-decoration: none;
}
form {
height: 100%;
}
div {
margin: 0;
padding: 0;
}
</style>
<script language="javascript" type="text/javascript"
src="https://api.e-iceblue.cn/web/editors/spireapi/SpireCloudEditor.js"></script>
<script type="text/javascript" language="javascript">
var docEditor;
var fileName = "";
var lang = "zh";
var fileType = "";
var token = null;
var appid = "40a7173618064b5d32cbd941de2d75de";
var appkey = "7rtntDrw5aqYYwsJ3qsIDSis2ZbJuXeO";
var innerAlert = function (message) {
if (console && console.log)
console.log(message);
};
var onReady = function () {
innerAlert("Document editor ready");
};
var onDocumentStateChange = function (event) {
var title = document.title.replace(/\*$/g, "");
document.title = title + (event.data ? "*" : "");
};
var onRequestEditRights = function () {
location.href = location.href.replace(RegExp("action=view\&?", "i"), "");
};
var onError = function (event) {
if (event)
innerAlert(event.data);
};
var onOutdatedVersion = function (event) {
location.reload(true);
};
function ajax(options) {
options = options || {};
var method = (options.type || "GET").toUpperCase(),
url = options.url,
queryString = null;
if (!url)
return;
if (options.data) {
queryString = [];
for (var attr in options.data) {
queryString.push(attr + "=" + options.data[attr]);
}
queryString = queryString.join("&");
}
if (method === "GET" && queryString) {
url += "?" + queryString;
queryString = "";
}
var xhr = new XMLHttpRequest();
xhr.open(method, url, true);
if (method === "POST")
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send(queryString);
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
var data = xhr.responseText;
if (options.dataType === "json")
data = JSON.parse(data);
options.success && options.success(data);
} else {
options.error && options.error(xhr.status);
}
}
}
}
var callbackfn = function (result) {
console.log(result.data);
if (result && result.data) {
var data = result.data,
fileName = data[0],
url = data[1];
if (fileName.indexOf('=') > -1)
fileName = fileName.split('=')[1];
var host = location.hostname;
ajax({
url: 'https://sggl.sedin.com.cn/sgglapi/api/FileUpload/DownloadDocument',
type: 'post',
data: {
'UrlStr': url,
'PCUrl': <%=PCUrl%>,
},
dataType: 'json',
async: false,
success: function (json) {
if (json.code == 200 || json.code == '200') {
alert('保存成功');
} else {
this.error(json, '保存失败');
}
},
error: function (json, msg) {
alert(+msg);
}
});
}
};
var connectEditor = function () {
var type = 'desktop';
if (type == "desktop") {
var app = navigator.appVersion;
if (app.toLowerCase().indexOf('window') != -1) {
type = "desktop";
} else {
type = "mobile";
}
};
var urlString = <%=BLL.Funs.SGGLUrl%>+<%=PCUrl%>, ;
var arrfn = urlString.split(".");
var strp = arrfn[arrfn.length - 1];
var documentTypeValue = null;
switch (strp) {
case "xls":
case "xlsx":
case "xlsm":
case "xlt":
case "xltx":
case "xltm":
case "ods":
case "fods":
case "ots":
case "csv":
documentTypeValue = "spreadsheet";
break;
case "pps":
case "ppsx":
case "ppsm":
case "ppt":
case "pptx":
case "pptm":
case "pot":
case "potx":
case "potm":
case "odp":
case "fodp":
case "otp":
documentTypeValue = "presentation";
break;
default:
documentTypeValue = "document";
break;
}
docEditor = new SpireCloudEditor.OpenApi("iframeEditor", {
fileAttrs: {
fileInfo: {
name: '',
ext: '',
primary: '',
creator: '',
createTime: new Date('20210505')
},
sourceUrl: urlString,
createUrl: '',
callbackUrl: '', ////This item can be empty, but only if the 'onSave' callback function must be defined in events. If the callback function is undefined and this item is empty, Cloud Editor will not provide save function.
verification: null, //用户文件系统下载文件时若需要验证类似token的数据可以写在这里
canEdit: true
},
templates:"",
whiteLabel:true,
user: {
primary: '',
name: '<%=UserName%>',
canSave: true,
customization: {
public: {
common: {
whiteLabel: true,
defaultZoom: 1,
openReviewChanges: false,
permGroups: ['everyone'], //限制编辑分组
viewVersion: false,
header: {
hideTitle: false,
defaultView: 'full'
}
},
word: null, //doc定制
powerpoint: null, //ppt定制
excel: null //xls定制
},
"private": {
"token": null,
"appid": null,
"appkey": null
}
}
},
editorAttrs: { //编辑器配置
editorWidth: '100%',
editorHeight: '100%',
editorMode: 'edit',
editorType: 'document', //编辑器类型,可不配置,程序根据文件类型获取,结果为 document,presentation,spreadsheet
platform: 'windows', //编辑器平台类型可选windows mobile embedded
viewLanguage: 'zh', //平台界面展示语言可选en/zh
canChat: true, //是否可聊天
canComment: true, //是否可批注
canReview: true,
canDownload: true,
canForcesave: true,
embedded: {
saveUrl: '',
embedUrl: '',
shareUrl: ''
},
events: {
'onReady': onReady,
'onDocumentStateChange': onDocumentStateChange,
'onError': onError,
'onRequestEditRights': onRequestEditRights,
'onOutdatedVersion': onOutdatedVersion,
'onSave': callbackfn
}
}
},
appid,
appkey
);
};
if (window.addEventListener) {
window.addEventListener("load", connectEditor);
} else if (window.attachEvent) {
window.attachEvent("load", connectEditor);
}
</script>
</head>
<body>
<form name="form1" method="post" action="./docEditor.aspx?fileID=demo+(2).docx&lang=zh" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
value="/wEPDwUKMTkyMjc5MTU4M2RkBQQQBsVcOHQbzTlwYapiES2Trc9Z/U4CC+r9rluZubc=" />
</div>
<div>
<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="C2EAC0DE" />
</div>
<div id="iframeEditor">
</div>
</form>
</body>
</html>

View File

@ -0,0 +1,74 @@
using BLL;
using RestSharp;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace FineUIPro.Web.AttachFile
{
public partial class OnlineEditing : System.Web.UI.Page
{
#region
public string UserId
{
get
{
return (string)ViewState["UserId"];
}
set
{
ViewState["UserId"] = value;
}
}
public string UserName
{
get
{
return (string)ViewState["UserName"];
}
set
{
ViewState["UserName"] = value;
}
}
public string PCUrl
{
get
{
return (string)ViewState["PCUrl"];
}
set
{
ViewState["PCUrl"] = value;
}
}
public string CanSave
{
get
{
return (string)ViewState["CanSave"];
}
set
{
ViewState["CanSave"] = value;
}
}
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
UserId = Request.Params["UserId"];
CanSave = Request.Params["CanSave"];
PCUrl = Request.Params["PCUrl"];
UserName=BLL.Person_PersonsService.GetPersonsNameById(UserId);
CanSave = "true";
}
}
}
}

View File

@ -0,0 +1,17 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.AttachFile
{
public partial class OnlineEditing
{
}
}

View File

@ -395,7 +395,10 @@ namespace FineUIPro.Web.CQMS.Plan
{
if (!string.IsNullOrEmpty(Grid1.SelectedRowID))
{
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("~/AttachFile/IndexOffice.aspx?cmd={0}|CQMSMainPlan", Grid1.SelectedRowID, "查看 -")));
var ins = BLL.CQMS_MainPlanService.GetMainPlanByMainPlanId(Grid1.SelectedRowID);
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("~/AttachFile/OnlineEditing.aspx?UserId={0}&PCUrl={1}", this.CurrUser.PersonId, ins.FilePath)));
// PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("~/AttachFile/IndexOffice.aspx?cmd={0}|CQMSMainPlan", Grid1.SelectedRowID, "查看 -")));
PageContext.RegisterStartupScript(Window1.GetHideReference());
}

View File

@ -233,6 +233,7 @@
<Content Include="AttachFile\officecontrol\NTKO控件安装程序-评测专用演示版本.exe" />
<Content Include="AttachFile\officecontrol\OfficeControl.cab" />
<Content Include="AttachFile\officecontrol\OfficeControlx64.cab" />
<Content Include="AttachFile\OnlineEditing.aspx" />
<Content Include="AttachFile\player.aspx" />
<Content Include="AttachFile\res\webuploader\Uploader.swf" />
<Content Include="AttachFile\res\webuploader\webuploader.nolog.js" />
@ -5780,6 +5781,13 @@
<Compile Include="AttachFile\Look.aspx.designer.cs">
<DependentUpon>Look.aspx</DependentUpon>
</Compile>
<Compile Include="AttachFile\OnlineEditing.aspx.cs">
<DependentUpon>OnlineEditing.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="AttachFile\OnlineEditing.aspx.designer.cs">
<DependentUpon>OnlineEditing.aspx</DependentUpon>
</Compile>
<Compile Include="AttachFile\player.aspx.cs">
<DependentUpon>player.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>

View File

@ -3,7 +3,9 @@ using System;
using System.Configuration;
using System.Drawing;
using System.IO;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Web.Http;
@ -136,7 +138,45 @@ namespace WebAPI.Controllers
return responeData;
}
#endregion
/// <summary>
/// 在线编辑回调保存文件
/// </summary>
/// <param name="toDoItem"></param>
/// <returns></returns>
[HttpPost]
public async Task DownloadDocument([FromBody] Model.ToDoItem toDoItem)
{
HttpClient _httpClient = new HttpClient();
try
{
// 发送 GET 请求以获取文件内容
var response = await _httpClient.GetAsync(toDoItem.UrlStr);
response.EnsureSuccessStatusCode();
string savePath = "";
if (!string.IsNullOrEmpty(toDoItem.PCUrl))
{
savePath = ConfigurationManager.AppSettings["localRoot"]+toDoItem.PCUrl;
}
if (savePath != null)
{
// 将文件内容保存到本地
using (var fileStream = File.Create(savePath))
{
await response.Content.CopyToAsync(fileStream);
}
Console.WriteLine("文件已成功下载并保存到本地。");
}
}
catch (Exception ex)
{
Console.WriteLine($"下载文件时出现错误:{ex.Message}");
}
}
#region
/// <summary>
/// 附件上传

View File

@ -301,6 +301,7 @@
<Folder Include="Models\" />
<Folder Include="Properties\PublishProfiles\" />
<Folder Include="Views\CQMSPersonManage\" />
<Folder Include="Views\Document\" />
<Folder Include="Views\HJGLIndex\" />
<Folder Include="Views\Login\" />
</ItemGroup>