@@ -72,6 +72,15 @@ namespace Learun.Application.Web.Areas.LR_Desktop.Controllers | |||
return View(); | |||
} | |||
/// <summary> | |||
/// 学工处心理老师 | |||
/// <summary> | |||
/// <returns></returns> | |||
[HttpGet] | |||
public ActionResult Index4() | |||
{ | |||
return View(); | |||
} | |||
/// <summary> | |||
/// 心理总站负责人 | |||
/// <summary> | |||
/// <returns></returns> | |||
@@ -0,0 +1,70 @@ | |||
@{ | |||
ViewBag.Title = "心理咨询回复(分院心理辅导站负责人)"; | |||
Layout = "~/Views/Shared/_Index.cshtml"; | |||
} | |||
<div class="lr-layout " > | |||
<div class="lr-layout-center"> | |||
<div class="lr-layout-wrap lr-layout-wrap-notitle "> | |||
<div class="lr-layout-tool"> | |||
<div class="lr-layout-tool-left"> | |||
<div class="lr-layout-tool-item"> | |||
<div id="datesearch"></div> | |||
</div> | |||
<div class="lr-layout-tool-item"> | |||
<div id="multiple_condition_query"> | |||
<div class="lr-query-formcontent"> | |||
<div class="col-xs-6 lr-form-item"> | |||
<div class="lr-form-item-title">学号</div> | |||
<input id="StuNo" type="text" class="form-control" /> | |||
</div> | |||
<div class="col-xs-6 lr-form-item"> | |||
<div class="lr-form-item-title">姓名</div> | |||
<input id="StuName" type="text" class="form-control" /> | |||
</div> | |||
<div class="col-xs-6 lr-form-item"> | |||
<div class="lr-form-item-title">系部</div> | |||
<div id="DeptNo"></div> | |||
</div> | |||
<div class="col-xs-6 lr-form-item"> | |||
<div class="lr-form-item-title">专业</div> | |||
<div id="MajorNo"></div> | |||
</div> | |||
<div class="col-xs-6 lr-form-item"> | |||
<div class="lr-form-item-title">班级</div> | |||
<div id="ClassNo"></div> | |||
</div> | |||
<div class="col-xs-6 lr-form-item"> | |||
<div class="lr-form-item-title">身份证号</div> | |||
<input id="IdentityCardNo" type="text" class="form-control" /> | |||
</div> | |||
<div class="col-xs-6 lr-form-item"> | |||
<div class="lr-form-item-title">回复人</div> | |||
<div id="ReplyUser"></div> | |||
</div> | |||
<div class="col-xs-6 lr-form-item"> | |||
<div class="lr-form-item-title">回复内容</div> | |||
<input id="ReplyContent" type="text" class="form-control" /> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
<div class="lr-layout-tool-right"> | |||
<div class=" btn-group btn-group-sm"> | |||
<a id="lr_refresh" class="btn btn-default"><i class="fa fa-refresh"></i></a> | |||
</div> | |||
<div class=" btn-group btn-group-sm" learun-authorize="yes"> | |||
@*<a id="lr_add" class="btn btn-default"><i class="fa fa-plus"></i> 新增</a>*@ | |||
<a id="lr_view" class="btn btn-default"><i class="fa fa-pencil-square-o"></i> 查看</a> | |||
<a id="lr_edit" class="btn btn-default"><i class="fa fa-pencil-square-o"></i> 回复</a> | |||
@*<a id="lr_delete" class="btn btn-default"><i class="fa fa-trash-o"></i> 删除</a>*@ | |||
<a id="lr_print" class="btn btn-default"><i class="fa fa-print"></i> 打印</a> | |||
</div> | |||
</div> | |||
</div> | |||
<div class="lr-layout-body" id="gridtable"></div> | |||
</div> | |||
</div> | |||
</div> | |||
@Html.AppendJsFile("/Areas/LR_Desktop/Views/PsychologyReplyInfo/Index4.js") |
@@ -0,0 +1,243 @@ | |||
/* * 版 本 Learun-ADMS V7.0.6 力软敏捷开发框架(http://www.learun.cn) | |||
* Copyright (c) 2013-2020 力软信息技术(苏州)有限公司 | |||
* 创建人:超级管理员 | |||
* 日 期:2023-03-06 12:21 | |||
* 描 述:心理咨询回复(学工处心理老师) | |||
*/ | |||
var refreshGirdData; | |||
var bootstrap = function ($, learun) { | |||
"use strict"; | |||
var startTime; | |||
var endTime; | |||
var page = { | |||
init: function () { | |||
page.initGird(); | |||
page.bind(); | |||
}, | |||
bind: function () { | |||
// 时间搜索框 | |||
$('#datesearch').lrdate({ | |||
dfdata: [ | |||
{ name: '今天', begin: function () { return learun.getDate('yyyy-MM-dd 00:00:00') }, end: function () { return learun.getDate('yyyy-MM-dd 23:59:59') } }, | |||
{ name: '近7天', begin: function () { return learun.getDate('yyyy-MM-dd 00:00:00', 'd', -6) }, end: function () { return learun.getDate('yyyy-MM-dd 23:59:59') } }, | |||
{ name: '近1个月', begin: function () { return learun.getDate('yyyy-MM-dd 00:00:00', 'm', -1) }, end: function () { return learun.getDate('yyyy-MM-dd 23:59:59') } }, | |||
{ name: '近3个月', begin: function () { return learun.getDate('yyyy-MM-dd 00:00:00', 'm', -3) }, end: function () { return learun.getDate('yyyy-MM-dd 23:59:59') } } | |||
], | |||
// 月 | |||
mShow: false, | |||
premShow: false, | |||
// 季度 | |||
jShow: false, | |||
prejShow: false, | |||
// 年 | |||
ysShow: false, | |||
yxShow: false, | |||
preyShow: false, | |||
yShow: false, | |||
// 默认 | |||
dfvalue: '1', | |||
selectfn: function (begin, end) { | |||
startTime = begin; | |||
endTime = end; | |||
page.search(); | |||
} | |||
}); | |||
$('#multiple_condition_query').lrMultipleQuery(function (queryJson) { | |||
page.search(queryJson); | |||
}, 220, 400); | |||
$('#DeptNo').lrDataSourceSelect({ code: 'CdDeptInfo', value: 'deptno', text: 'deptname' }); | |||
$('#MajorNo').lrDataSourceSelect({ code: 'CdMajorInfo', value: 'majorno', text: 'majorname' }); | |||
$('#ClassNo').lrDataSourceSelect({ code: 'bjsj', value: 'classno', text: 'classname' }); | |||
$('#ReplyUser').lrDataSourceSelect({ code: 'TeacherInfo', value: 'f_account', text: 'f_realname' }); | |||
// 刷新 | |||
$('#lr_refresh').on('click', function () { | |||
location.reload(); | |||
}); | |||
// 新增 | |||
$('#lr_add').on('click', function () { | |||
learun.layerForm({ | |||
id: 'form', | |||
title: '新增', | |||
url: top.$.rootUrl + '/LR_Desktop/PsychologyReplyInfo/Form', | |||
width: 800, | |||
height: 700, | |||
callBack: function (id) { | |||
return top[id].acceptClick(refreshGirdData); | |||
} | |||
}); | |||
}); | |||
// 查看 | |||
$('#lr_view').on('click', function () { | |||
var PsychologyInfoId = $('#gridtable').jfGridValue('PsychologyInfoId'); | |||
if (learun.checkrow(PsychologyInfoId)) { | |||
learun.layerForm({ | |||
id: 'formview', | |||
title: '查看', | |||
url: top.$.rootUrl + '/LR_Desktop/PsychologyReplyInfo/FormView?PsychologyInfoId=' + PsychologyInfoId + '&type=' + 4, | |||
width: 800, | |||
height: 700, | |||
btn: null, | |||
callBack: function (id) { | |||
return top[id].acceptClick(refreshGirdData); | |||
} | |||
}); | |||
} | |||
}); | |||
// 编辑 | |||
$('#lr_edit').on('click', function () { | |||
var keyValue = $('#gridtable').jfGridValue('Id'); | |||
//主表Id | |||
var PsychologyInfoId = $('#gridtable').jfGridValue('PsychologyInfoId'); | |||
var State = $('#gridtable').jfGridValue('State'); | |||
if (State == 7) { | |||
learun.alert.warning('该记录已归档!'); | |||
return false; | |||
} | |||
if (State != 4) { | |||
learun.alert.warning('当前由其他老师审核!'); | |||
return false; | |||
} | |||
if (learun.checkrow(PsychologyInfoId)) { | |||
learun.layerForm({ | |||
id: 'form', | |||
title: '回复', | |||
url: top.$.rootUrl + '/LR_Desktop/PsychologyReplyInfo/Form?keyValue=' + keyValue, | |||
width: 800, | |||
height: 700, | |||
callBack: function (id) { | |||
return top[id].acceptClick(refreshGirdData); | |||
} | |||
}); | |||
} | |||
}); | |||
// 删除 | |||
$('#lr_delete').on('click', function () { | |||
var keyValue = $('#gridtable').jfGridValue('Id'); | |||
if (learun.checkrow(keyValue)) { | |||
learun.layerConfirm('是否确认删除该项!', function (res) { | |||
if (res) { | |||
learun.deleteForm(top.$.rootUrl + '/LR_Desktop/PsychologyReplyInfo/DeleteForm', { keyValue: keyValue }, function () { | |||
refreshGirdData(); | |||
}); | |||
} | |||
}); | |||
} | |||
}); | |||
// 打印 | |||
$('#lr_print').on('click', function () { | |||
$('#gridtable').jqprintTable(); | |||
}); | |||
}, | |||
// 初始化列表 | |||
initGird: function () { | |||
$('#gridtable').jfGrid({ | |||
url: top.$.rootUrl + '/LR_Desktop/PsychologyReplyInfo/GetPageList', | |||
headData: [ | |||
{ label: "学号", name: "StuNo", width: 100, align: "left" }, | |||
{ label: "学生姓名", name: "StuName", width: 100, align: "left" }, | |||
{ label: "提交日期", name: "SubmitTime", width: 150, align: "left" }, | |||
{ | |||
label: "系", name: "DeptNo", width: 100, align: "left", | |||
formatterAsync: function (callback, value, row, op, $cell) { | |||
learun.clientdata.getAsync('custmerData', { | |||
url: '/LR_SystemModule/DataSource/GetDataTable?code=' + 'CdDeptInfo', | |||
key: value, | |||
keyId: 'deptno', | |||
callback: function (_data) { | |||
callback(_data['deptname']); | |||
} | |||
}); | |||
} | |||
}, | |||
{ | |||
label: "专业", name: "MajorNo", width: 100, align: "left", | |||
formatterAsync: function (callback, value, row, op, $cell) { | |||
learun.clientdata.getAsync('custmerData', { | |||
url: '/LR_SystemModule/DataSource/GetDataTable?code=' + 'CdMajorInfo', | |||
key: value, | |||
keyId: 'majorno', | |||
callback: function (_data) { | |||
callback(_data['majorname']); | |||
} | |||
}); | |||
} | |||
}, | |||
{ | |||
label: "班级", name: "ClassNo", width: 100, align: "left", | |||
formatterAsync: function (callback, value, row, op, $cell) { | |||
learun.clientdata.getAsync('custmerData', { | |||
url: '/LR_SystemModule/DataSource/GetDataTable?code=' + 'bjsj', | |||
key: value, | |||
keyId: 'classno', | |||
callback: function (_data) { | |||
callback(_data['classname']); | |||
} | |||
}); | |||
} | |||
}, | |||
{ label: "身份证号", name: "IdentityCardNo", width: 100, align: "left" }, | |||
{ | |||
label: "是否单亲", name: "IsSingle", width: 100, align: "left", | |||
formatter: function (value, row) { | |||
if (value == true) { | |||
return '是'; | |||
} | |||
else if (value == false) { | |||
return '否'; | |||
} | |||
} | |||
}, | |||
{ label: "咨询内容", name: "Concent", width: 100, align: "left" }, | |||
{ | |||
label: "最终回复人", name: "ReplyUser", width: 100, align: "left", | |||
formatterAsync: function (callback, value, row, op, $cell) { | |||
learun.clientdata.getAsync('custmerData', { | |||
url: '/LR_SystemModule/DataSource/GetDataTable?code=' + 'TeacherInfo', | |||
key: value, | |||
keyId: 'f_account', | |||
callback: function (_data) { | |||
callback(_data['f_realname']); | |||
} | |||
}); | |||
} | |||
}, | |||
{ label: "回复内容", name: "ReplyContent", width: 100, align: "left" }, | |||
{ label: "回复日期", name: "ReplyTime", width: 150, align: "left" }, | |||
{ | |||
label: "状态", name: "State", width: 100, align: "left", | |||
formatter: function (cellvalue) { | |||
if (cellvalue == 4) { | |||
return "<span class=\"label label-warning\">待回复</span>"; | |||
} else if (cellvalue == 7) { | |||
return "<span class=\"label label-success\">已归档</span>"; | |||
//return "<span class=\"label label-danger\">未发布</span>"; | |||
} else { | |||
return "<span class=\"label label-primary\">其他老师审核</span>"; | |||
} | |||
} | |||
}, | |||
], | |||
mainId: 'Id', | |||
isPage: true, | |||
sidx: 'SubmitTime', | |||
sord: 'ASC' | |||
}); | |||
//page.search(); | |||
}, | |||
search: function (param) { | |||
param = param || {}; | |||
param.StartTime = startTime; | |||
param.EndTime = endTime; | |||
$('#gridtable').jfGridSet('reload', { queryJson: JSON.stringify(param), type: 4 }); | |||
} | |||
}; | |||
refreshGirdData = function () { | |||
$('#gridtable').jfGridSet('reload'); | |||
}; | |||
page.init(); | |||
} |
@@ -62,12 +62,12 @@ | |||
border-right: 1px solid #333; | |||
} | |||
.perWeek li { | |||
width: 12.5%; | |||
float: left; | |||
border-left: 1px solid #333; | |||
height: 100%; | |||
} | |||
.perWeek li { | |||
width: 12.5%; | |||
float: left; | |||
border-left: 1px solid #333; | |||
height: 100%; | |||
} | |||
.perFestivalsBox { | |||
border-left: 1px solid #333; | |||
@@ -76,29 +76,28 @@ | |||
text-align: center; | |||
} | |||
.perFestivalsBox table { | |||
display: block; | |||
width: 100%; | |||
text-align: center; | |||
} | |||
.perFestivalsBox td { | |||
border-left: 1px solid #333; | |||
border-top: 1px solid #333; | |||
padding: 1px; | |||
width: 12.5%; | |||
font-size: 12px; | |||
} | |||
.perFestivalsBox td div { | |||
min-height: 16px; | |||
line-height: 16px; | |||
} | |||
.perFestivalsBox td:first-child, .perWeek li:first-child { | |||
border-left: 0; | |||
} | |||
.perFestivalsBox table { | |||
display: block; | |||
width: 100%; | |||
text-align: center; | |||
} | |||
.perFestivalsBox td { | |||
border-left: 1px solid #333; | |||
border-top: 1px solid #333; | |||
padding: 1px; | |||
width: 12.5%; | |||
font-size: 12px; | |||
} | |||
.perFestivalsBox td div { | |||
min-height: 16px; | |||
line-height: 16px; | |||
} | |||
.perFestivalsBox td:first-child, .perWeek li:first-child { | |||
border-left: 0; | |||
} | |||
</style> | |||
<style> | |||
.lr-select { | |||
@@ -129,7 +128,9 @@ | |||
<div class="lr-layout-tool-item"> | |||
<a id="lr_search" class="btn btn-primary">查询</a> | |||
</div> | |||
<div class="lr-layout-tool-item"> | |||
<a id="wordExport" class="btn btn-primary">导出</a> | |||
</div> | |||
</div> | |||
<div class="lr-layout-tool-right"> | |||
<div class=" btn-group btn-group-sm"> | |||
@@ -147,21 +148,44 @@ | |||
</div> | |||
<div class="lr-layout-body" style="overflow: auto;"> | |||
<div class="warpper"> | |||
<div class="personalBox"> | |||
<div class="personalBox" id="printFiled"> | |||
<div class="personT"></div> | |||
<div class="perSemester"></div> | |||
<ul class="perWeek"> | |||
<li>节次/星期</li> | |||
<li>星期一</li> | |||
<li>星期二</li> | |||
<li>星期三</li> | |||
<li>星期四</li> | |||
<li>星期五</li> | |||
<li>星期六</li> | |||
<li>星期日</li> | |||
</ul> | |||
<div id="printshow" style="display:none;"> | |||
<div class="perSemester"></div> | |||
<ul class="perWeek"> | |||
<li>节次/星期</li> | |||
<li>星期一</li> | |||
<li>星期二</li> | |||
<li>星期三</li> | |||
<li>星期四</li> | |||
<li>星期五</li> | |||
<li>星期六</li> | |||
<li>星期日</li> | |||
</ul> | |||
</div> | |||
<div id="exportshow"> | |||
<div class="perSemester" style="border-bottom:0;"></div> | |||
<table border="1" style="width:100%;height:40px;border-bottom:hidden;border-collapse:collapse;border-color:#dfdfdf;"> | |||
<tr> | |||
<th style="width:12.5%;text-align:center;color: #333;font-weight: normal;">节次/星期</th> | |||
<th style="width:12.5%;text-align:center;color: #333;font-weight: normal;">星期一</th> | |||
<th style="width:12.5%;text-align:center;color: #333;font-weight: normal;">星期二</th> | |||
<th style="width:12.5%;text-align:center;color: #333;font-weight: normal;">星期三</th> | |||
<th style="width:12.5%;text-align:center;color: #333;font-weight: normal;">星期四</th> | |||
<th style="width:12.5%;text-align:center;color: #333;font-weight: normal;">星期五</th> | |||
<th style="width:12.5%;text-align:center;color: #333;font-weight: normal;">星期六</th> | |||
<th style="width:12.5%;text-align:center;color: #333;font-weight: normal;">星期日</th> | |||
</tr> | |||
</table> | |||
</div> | |||
<div class="perFestivalsBox"> | |||
<table cellspacing="0" border="0"></table> | |||
@*<table cellspacing="0" border="0" style="width:100%;" ></table>*@ | |||
<table cellspacing="0" border="1" style="width:100%;border-collapse:collapse;border-color:#dfdfdf;border:0;"></table> | |||
</div> | |||
</div> | |||
</div> | |||
@@ -172,3 +196,15 @@ | |||
@Html.AppendJsFile("/Areas/PersonnelManagement/Views/TimeTable/IndexInEducation.js") | |||
<script src="~/Content/js/FileSaver.js"></script> | |||
<script src="~/Content/js/jquery.wordexport.js"></script> | |||
<script> | |||
$('#wordExport').on('click', function () { | |||
$('#printshow').hide(); | |||
$('#exportshow').show(); | |||
$('#printFiled').wordExport('filename'); | |||
}) | |||
</script> | |||
@@ -17,7 +17,7 @@ var bootstrap = function ($, learun) { | |||
(function (arg) { | |||
var args = arg - 1; | |||
var datas = flogs(arg, weekLists, 'time'); | |||
html += ' <tr><td>' + arg + '节</td>'; | |||
html += ' <tr><td style="width:12.5%;text-align:center;" >' + arg + '节</td>'; | |||
if (datas) { | |||
var lists = datas.list; | |||
html += tdHandles(lists); | |||
@@ -57,7 +57,7 @@ var bootstrap = function ($, learun) { | |||
function tdHandle() { | |||
var html = ''; | |||
for (var j = 0; j < 7; j++) { | |||
html += '<td><div></div><div></div><div></div><div></div></td>'; | |||
html += '<td style="width:12.5%;text-align:center;" ><div></div><div></div><div></div><div></div></td>'; | |||
} | |||
return html; | |||
} | |||
@@ -70,7 +70,7 @@ var bootstrap = function ($, learun) { | |||
var args = arg - 1; | |||
var datas = flogs2(arg, lists, 'day'); | |||
if (datas.length > 0) { | |||
html += '<td class="active">'; | |||
html += '<td class="active" style="width:12.5%;text-align:center;" >'; | |||
$.each(datas, function (i, item) { | |||
if (i > 0) { | |||
html += '<hr>'; | |||
@@ -144,7 +144,7 @@ var bootstrap = function ($, learun) { | |||
selectfn: function (begin, end) { | |||
startTime = begin; | |||
endTime = end; | |||
page.search(); | |||
//page.search(); | |||
} | |||
}); | |||
//查询 | |||
@@ -199,6 +199,8 @@ var bootstrap = function ($, learun) { | |||
//打印课程表 | |||
$('#perBtn').on('click', | |||
function () { | |||
$('#printshow').show(); | |||
$('#exportshow').hide(); | |||
AddPrintContent(); | |||
}); | |||
var LODOP, P_ID = "", TaskID1, TaskID2, t, waiting = false, c = 0, loop = 0; //声明为全局变量 | |||
@@ -0,0 +1,172 @@ | |||
/* | |||
* FileSaver.js | |||
* A saveAs() FileSaver implementation. | |||
* | |||
* By Eli Grey, http://eligrey.com | |||
* | |||
* License : https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md (MIT) | |||
* source : http://purl.eligrey.com/github/FileSaver.js | |||
*/ | |||
// The one and only way of getting global scope in all environments | |||
// https://stackoverflow.com/q/3277182/1008999 | |||
var _global = typeof window === 'object' && window.window === window | |||
? window : typeof self === 'object' && self.self === self | |||
? self : typeof global === 'object' && global.global === global | |||
? global | |||
: this | |||
function bom (blob, opts) { | |||
if (typeof opts === 'undefined') opts = { autoBom: false } | |||
else if (typeof opts !== 'object') { | |||
console.warn('Deprecated: Expected third argument to be a object') | |||
opts = { autoBom: !opts } | |||
} | |||
// prepend BOM for UTF-8 XML and text/* types (including HTML) | |||
// note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF | |||
if (opts.autoBom && /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)) { | |||
return new Blob([String.fromCharCode(0xFEFF), blob], { type: blob.type }) | |||
} | |||
return blob | |||
} | |||
function download (url, name, opts) { | |||
var xhr = new XMLHttpRequest() | |||
xhr.open('GET', url) | |||
xhr.responseType = 'blob' | |||
xhr.onload = function () { | |||
saveAs(xhr.response, name, opts) | |||
} | |||
xhr.onerror = function () { | |||
console.error('could not download file') | |||
} | |||
xhr.send() | |||
} | |||
function corsEnabled (url) { | |||
var xhr = new XMLHttpRequest() | |||
// use sync to avoid popup blocker | |||
xhr.open('HEAD', url, false) | |||
try { | |||
xhr.send() | |||
} catch (e) {} | |||
return xhr.status >= 200 && xhr.status <= 299 | |||
} | |||
// `a.click()` doesn't work for all browsers (#465) | |||
function click (node) { | |||
try { | |||
node.dispatchEvent(new MouseEvent('click')) | |||
} catch (e) { | |||
var evt = document.createEvent('MouseEvents') | |||
evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80, | |||
20, false, false, false, false, 0, null) | |||
node.dispatchEvent(evt) | |||
} | |||
} | |||
// Detect WebView inside a native macOS app by ruling out all browsers | |||
// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too | |||
// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos | |||
var isMacOSWebView = _global.navigator && /Macintosh/.test(navigator.userAgent) && /AppleWebKit/.test(navigator.userAgent) && !/Safari/.test(navigator.userAgent) | |||
var saveAs = _global.saveAs || ( | |||
// probably in some web worker | |||
(typeof window !== 'object' || window !== _global) | |||
? function saveAs () { /* noop */ } | |||
// Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView | |||
: ('download' in HTMLAnchorElement.prototype && !isMacOSWebView) | |||
? function saveAs (blob, name, opts) { | |||
var URL = _global.URL || _global.webkitURL | |||
// Namespace is used to prevent conflict w/ Chrome Poper Blocker extension (Issue #561) | |||
var a = document.createElementNS('http://www.w3.org/1999/xhtml', 'a') | |||
name = name || blob.name || 'download' | |||
a.download = name | |||
a.rel = 'noopener' // tabnabbing | |||
// TODO: detect chrome extensions & packaged apps | |||
// a.target = '_blank' | |||
if (typeof blob === 'string') { | |||
// Support regular links | |||
a.href = blob | |||
if (a.origin !== location.origin) { | |||
corsEnabled(a.href) | |||
? download(blob, name, opts) | |||
: click(a, a.target = '_blank') | |||
} else { | |||
click(a) | |||
} | |||
} else { | |||
// Support blobs | |||
a.href = URL.createObjectURL(blob) | |||
setTimeout(function () { URL.revokeObjectURL(a.href) }, 4E4) // 40s | |||
setTimeout(function () { click(a) }, 0) | |||
} | |||
} | |||
// Use msSaveOrOpenBlob as a second approach | |||
: 'msSaveOrOpenBlob' in navigator | |||
? function saveAs (blob, name, opts) { | |||
name = name || blob.name || 'download' | |||
if (typeof blob === 'string') { | |||
if (corsEnabled(blob)) { | |||
download(blob, name, opts) | |||
} else { | |||
var a = document.createElement('a') | |||
a.href = blob | |||
a.target = '_blank' | |||
setTimeout(function () { click(a) }) | |||
} | |||
} else { | |||
navigator.msSaveOrOpenBlob(bom(blob, opts), name) | |||
} | |||
} | |||
// Fallback to using FileReader and a popup | |||
: function saveAs (blob, name, opts, popup) { | |||
// Open a popup immediately do go around popup blocker | |||
// Mostly only available on user interaction and the fileReader is async so... | |||
popup = popup || open('', '_blank') | |||
if (popup) { | |||
popup.document.title = | |||
popup.document.body.innerText = 'downloading...' | |||
} | |||
if (typeof blob === 'string') return download(blob, name, opts) | |||
var force = blob.type === 'application/octet-stream' | |||
var isSafari = /constructor/i.test(_global.HTMLElement) || _global.safari | |||
var isChromeIOS = /CriOS\/[\d]+/.test(navigator.userAgent) | |||
if ((isChromeIOS || (force && isSafari) || isMacOSWebView) && typeof FileReader !== 'undefined') { | |||
// Safari doesn't allow downloading of blob URLs | |||
var reader = new FileReader() | |||
reader.onloadend = function () { | |||
var url = reader.result | |||
url = isChromeIOS ? url : url.replace(/^data:[^;]*;/, 'data:attachment/file;') | |||
if (popup) popup.location.href = url | |||
else location = url | |||
popup = null // reverse-tabnabbing #460 | |||
} | |||
reader.readAsDataURL(blob) | |||
} else { | |||
var URL = _global.URL || _global.webkitURL | |||
var url = URL.createObjectURL(blob) | |||
if (popup) popup.location = url | |||
else location.href = url | |||
popup = null // reverse-tabnabbing #460 | |||
setTimeout(function () { URL.revokeObjectURL(url) }, 4E4) // 40s | |||
} | |||
} | |||
) | |||
_global.saveAs = saveAs.saveAs = saveAs | |||
if (typeof module !== 'undefined') { | |||
module.exports = saveAs; | |||
} |
@@ -0,0 +1,84 @@ | |||
if (typeof jQuery !== "undefined" && typeof saveAs !== "undefined") { | |||
(function($) { | |||
$.fn.wordExport = function(fileName) { | |||
fileName = typeof fileName !== 'undefined' ? fileName : "jQuery-Word-Export"; | |||
var static = { | |||
mhtml: { | |||
top: "Mime-Version: 1.0\nContent-Base: " + location.href + "\nContent-Type: Multipart/related; boundary=\"NEXT.ITEM-BOUNDARY\";type=\"text/html\"\n\n--NEXT.ITEM-BOUNDARY\nContent-Type: text/html; charset=\"utf-8\"\nContent-Location: " + location.href + "\n\n<!DOCTYPE html>\n<html>\n_html_</html>", | |||
head: "<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n<style>\n_styles_\n</style>\n</head>\n", | |||
body: "<body>_body_</body>" | |||
} | |||
}; | |||
var options = { | |||
maxWidth: 624 | |||
}; | |||
// Clone selected element before manipulating it | |||
var markup = $(this).clone(); | |||
// Remove hidden elements from the output | |||
markup.each(function() { | |||
var self = $(this); | |||
if (self.is(':hidden')) | |||
self.remove(); | |||
}); | |||
// Embed all images using Data URLs | |||
var images = Array(); | |||
var img = markup.find('img'); | |||
for (var i = 0; i < img.length; i++) { | |||
// Calculate dimensions of output image | |||
var w = Math.min(img[i].width, options.maxWidth); | |||
var h = img[i].height * (w / img[i].width); | |||
// Create canvas for converting image to data URL | |||
var canvas = document.createElement("CANVAS"); | |||
canvas.width = w; | |||
canvas.height = h; | |||
// Draw image to canvas | |||
var context = canvas.getContext('2d'); | |||
context.drawImage(img[i], 0, 0, w, h); | |||
// Get data URL encoding of image | |||
var uri = canvas.toDataURL("image/png"); | |||
$(img[i]).attr("src", img[i].src); | |||
img[i].width = w; | |||
img[i].height = h; | |||
// Save encoded image to array | |||
images[i] = { | |||
type: uri.substring(uri.indexOf(":") + 1, uri.indexOf(";")), | |||
encoding: uri.substring(uri.indexOf(";") + 1, uri.indexOf(",")), | |||
location: $(img[i]).attr("src"), | |||
data: uri.substring(uri.indexOf(",") + 1) | |||
}; | |||
} | |||
// Prepare bottom of mhtml file with image data | |||
var mhtmlBottom = "\n"; | |||
for (var i = 0; i < images.length; i++) { | |||
mhtmlBottom += "--NEXT.ITEM-BOUNDARY\n"; | |||
mhtmlBottom += "Content-Location: " + images[i].location + "\n"; | |||
mhtmlBottom += "Content-Type: " + images[i].type + "\n"; | |||
mhtmlBottom += "Content-Transfer-Encoding: " + images[i].encoding + "\n\n"; | |||
mhtmlBottom += images[i].data + "\n\n"; | |||
} | |||
mhtmlBottom += "--NEXT.ITEM-BOUNDARY--"; | |||
//TODO: load css from included stylesheet | |||
var styles = ""; | |||
// Aggregate parts of the file together | |||
var fileContent = static.mhtml.top.replace("_html_", static.mhtml.head.replace("_styles_", styles) + static.mhtml.body.replace("_body_", markup.html())) + mhtmlBottom; | |||
// Create a Blob with the file contents | |||
var blob = new Blob([fileContent], { | |||
type: "application/msword;charset=utf-8" | |||
}); | |||
saveAs(blob, fileName + ".doc"); | |||
}; | |||
})(jQuery); | |||
} else { | |||
if (typeof jQuery === "undefined") { | |||
console.error("jQuery Word Export: missing dependency (jQuery)"); | |||
} | |||
if (typeof saveAs === "undefined") { | |||
console.error("jQuery Word Export: missing dependency (FileSaver.js)"); | |||
} | |||
} |
@@ -1512,6 +1512,7 @@ | |||
<Content Include="Areas\LR_Desktop\Views\MessageRind\Index.js" /> | |||
<Content Include="Areas\LR_Desktop\Views\PsychologyReplyInfo\FormFive.js" /> | |||
<Content Include="Areas\LR_Desktop\Views\PsychologyReplyInfo\FormView.js" /> | |||
<Content Include="Areas\LR_Desktop\Views\PsychologyReplyInfo\Index4.js" /> | |||
<Content Include="Areas\LR_Desktop\Views\PsychologyReplyInfo\IndexSix.js" /> | |||
<Content Include="Areas\LR_Desktop\Views\PsychologyReplyInfo\IndexFive.js" /> | |||
<Content Include="Areas\LR_Desktop\Views\PsychologyReplyInfo\Index3.js" /> | |||
@@ -8086,6 +8087,7 @@ | |||
<Content Include="Areas\LR_Desktop\Views\PsychologyReplyInfo\Index3.cshtml" /> | |||
<Content Include="Areas\LR_Desktop\Views\PsychologyReplyInfo\IndexFive.cshtml" /> | |||
<Content Include="Areas\LR_Desktop\Views\PsychologyReplyInfo\IndexSix.cshtml" /> | |||
<Content Include="Areas\LR_Desktop\Views\PsychologyReplyInfo\Index4.cshtml" /> | |||
<Content Include="Areas\LR_Desktop\Views\PsychologyReplyInfo\FormFive.cshtml" /> | |||
<None Include="Properties\PublishProfiles\CustomProfile.pubxml" /> | |||
<None Include="Properties\PublishProfiles\FolderProfile.pubxml" /> | |||
@@ -138,7 +138,7 @@ where a.Id='{keyValue}'"; | |||
strSql.Append("SELECT "); | |||
strSql.Append(@" | |||
info.StuNo,info.createtime as SubmitTime,info.Concent | |||
,t.ReplyUser,t.ReplyContent,t.ReplyTime,case when a.ReplyType is null then t.ReplyType else a.ReplyType end as ReplyType,t.url,info.[state],info.id as PsychologyInfoId ,info.url as StuUrl | |||
,t.ReplyUser,t.ReplyContent,t.ReplyTime,a.ReplyType,t.url,info.[state],info.id as PsychologyInfoId ,info.url as StuUrl | |||
FROM PsychologyInfo info "); | |||
strSql.Append(@" join StuInfoBasic s on info.StuNo=s.StuNo | |||
left join (select * from PsychologyReplyInfo where ReplyType=2 )t on t.PsychologyInfoid=info.id | |||
@@ -188,7 +188,7 @@ where a.Id='{keyValue}'"; | |||
} | |||
/// <summary> | |||
/// 班级辅导员审核 | |||
/// 班级辅导员审核、分院心理辅导站负责人审核、学工处心理老师审核 | |||
/// </summary> | |||
/// <param name="keyValue">主键</param> | |||
/// <param name="entity">实体</param> | |||
@@ -240,8 +240,27 @@ where a.Id='{keyValue}'"; | |||
if (entity.ReplyType == "2")//回复 | |||
{ | |||
//修改状态 | |||
entity.State = 7; | |||
var sql = $@"INSERT INTO [dbo].[PsychologyReplyInfo] | |||
([Id] | |||
,[PsychologyInfoId] | |||
,[State] | |||
,[ReplyContent] | |||
,[ReplyType] | |||
,[Url] | |||
,[ReplyUser] | |||
,[ReplyTime] | |||
,[CreateTime]) | |||
VALUES | |||
(newid() | |||
,'{psychologyInfoId}' | |||
,'7' | |||
,NULL | |||
,NULL | |||
,NULL | |||
,NULL | |||
,NULL | |||
,getdate())"; | |||
db.ExecuteBySql(sql); | |||
//修改主表state | |||
var updSql = $" update PsychologyInfo set [state]='7' where Id='{psychologyInfoId}'"; | |||
db.ExecuteBySql(updSql); | |||