ComplianceServer/oldcode/Core.Web/Views/ComplianceOrder/CheckOrder.cshtml

701 lines
28 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@using CRM.Core.Model.Entity
@using Core.Web.WebHelper
@{
/**/
ViewBag.Title = "RecordDetail";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<style>
.self-table-click td {
background-color: #f3ebbc;
}
.playClass {
width: 18px;
margin: 0;
display: initial;
cursor: pointer;
}
.chatItem {
display: flex;
margin-top: 10px;
}
.chatcontent {
line-height: 28px;
height: 28px;
}
@* .hgcontent {
display: flex;
justify-content: space-between
}*@
@* .logcontent {
width: 74%;
}*@
#tabl1 {
width: 100%;
}
.layui-tab-content{
padding-bottom:0px;
}
#ExportData {
display: inline-block;
vertical-align: middle;
height: 38px;
line-height: 38px;
border: 1px solid transparent;
padding: 0 18px;
background-color: #009688;
color: #fff;
white-space: nowrap;
text-align: center;
font-size: 14px;
border-radius: 2px;
cursor: pointer;
}
@*.chatinput {
width: 500px !important;
}*@
.icon-delmini {
background: url(/images/delbtn.png) no-repeat center;
}
.icon-submini {
background: url(/images/sub.png) no-repeat center;
}
.addlog {
border-radius: 2px;
}
.logitem{
display:flex;
}
</style>
<div class="x-body">
<div class="layui-btn-group" style="padding-bottom:10px;">
</div>
<div id="mytoolbar" style="display:none">
<div class="layui-inline">
<input type="text" name="txt_resid" placeholder="请输入" autocomplete="off" class="layui-input" value="@ViewBag.umid" style="display:none">
</div>
</div>
<div class="hgcontent">
<div class="addlog">
<form class="layui-form logitem">
<div>
<div class="layui-form-item" pane>
<input type="text" name="logid" id="logid" class="layui-input" disabled="disabled" readonly="readonly" style="width:300px;display:none">
<label class="layui-form-label">合规结果:</label>
<div class="layui-input-block">
<input type="radio" name="checkstatus" lay-verify="required" value="1" title="合规" checked>
<input type="radio" name="checkstatus" lay-verify="required" value="2" title="违规">
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label layui-required">订单号:</label>
<div class="layui-input-inline">
<div id="selectOrder" style="width: 290px"></div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">质检时间:</label>
<div class="layui-input-block">
<input type="text" name="checktime" id="checktime" class="layui-input" value="@ViewBag.CheckTime" disabled="disabled" readonly="readonly" style="width:300px">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">质检人:</label>
<div class="layui-input-block">
<input type="text" name="username" id="username" class="layui-input" value="@ViewBag.CheckUser" disabled="disabled" readonly="readonly" style="width:300px">
</div>
</div>
<div class="layui-form-item">
<button type="button" class="layui-btn layui-btn-sm" id="btnExt"><i class="layui-icon"></i></button>
<button type="button" class="layui-btn layui-btn-sm" id="btnDel"><i class="" style="font-weight:800">一</i></button>
<button type="button" class="layui-btn layui-btn-sm" id="checkreload">重置</button>
<button type="button" class="layui-btn layui-btn-sm" id="checksave">提交</button>
</div>
</div>
<div>
<div class="layui-form-item" id="extdiv" style="margin-left:20px">
<div class="layui-tab" lay-filter="tabchannel" style="width: 680px">
<ul class="layui-tab-title">
</ul>
<div class="layui-tab-content">
</div>
</div>
<input type="hidden" name="productext" id="productext" />
</div>
</div>
</form>
</div>
<div class="logcontent">
<table class="layui-hide" id="tabl1" lay-filter="tabl1"></table>
</div>
</div>
<iframe id="BillOpen" width="0" height="0" scrolling="no" frameborder="0" style="display:none;"></iframe>
</div>
<script>
var selectRow = {};
var allChannel = @Html.Raw(ViewBag.EidtJson);
var orderinfo = @Html.Raw(ViewBag.Orderinfo);
var umid = '@Html.Raw(ViewBag.umid)';
var dataindex = 0;
var orderselect = renderSelectOrder(orderinfo.OrderId, allChannel);
//reloadTable();
var postBody = [];
var winindex;
var setting = @Html.Raw(ViewBag.HgCheckSetting);
layui.use(['table', 'form', 'element'], function () {
var table = layui.table;
var form = layui.form;
var element = layui.element;
var param2 = GetParams("mytoolbar");
table.render({
id: 'testReload',//列表别名ID
elem: '#tabl1',//表ID
url: '/ComplianceOrder/CheckOrder',
method: 'POST',
even: false,
cols: [[
{
field: 'Log', title: '操作', merge: true, width: 100, templet: function (d) {
var html = ""
return "<a href='javascript:initEditModel(" + d.Id + ");' style='color:#01AAED'>修改</a><a href='javascript:initEditModel(" + d.Id + ",iscopy=1);' style='color:#01AAED;margin-left: 10px;'>复制</a>";
}
}
, { field: 'Result', title: '质检结果', width: 80, merge: true}
, { field: 'OrderIds', title: '订单号', width: 120, merge: true }
, { field: 'CheckTypeName', title: '质检类型', width: 120 }
, { field: 'ShowSource', title: '员工企微ID/录音ID', width: 120 }
, { field: 'conditionText', title: '合规情况' }
, { field: 'content', title: '违规内容' }
, { field: 'suggest', title: '合规建议', width: 120 }
, { field: 'CheckTime', title: '质检时间', width: 180, merge: true }
, { field: 'Ename', title: '质检人', width: 100, merge: true }
]], done: function (res, curr, count) {
mergeRows(res, this);
if (res.data.length > 0) {
initEditModel(res.data[0].Id);
}
}
, page: { //支持传入 laypage 组件的所有参数某些参数除外jump/elem - 详见文档
layout: ['limit', 'count', 'prev', 'page', 'next', 'skip', 'refresh'] //自定义分页布局
//,curr: 5 //设定初始在第 5 页
, groups: 5 //只显示 1 个连续页码
}
, where: param2
});
element.on('tab(tabchannel)', function () {
var layid = $(this).attr("lay-id");
dataindex = layid;
});
$("#btnExt").click(function () {
var i = postBody.length;
var id = i;
var html = "";
html += '<div class="layui-form-item">';
html += ' <div class="layui-inline">';
html += ' <label class="layui-form-label">质检类型:</label>';
html += ' <div class="layui-input-inline">';
html += ' <select id="checktype' + i + '" lay-filter="isonlinebuy">';
html += ' <option value="1">企微</option>';
html += ' <option value="2">录音</option>';
html += ' </select>';
html += ' </div>';
html += ' </div>';
html += '</div>';
html += '<div class="layui-form-item">';
html += ' <div class="layui-inline">';
html += ' <label class="layui-form-label" ><a href="javascript:void(0)" onclick="Choose(this)" style="color:blue" data-index="' + i + '">员工企微ID/录音ID</a></label>';
html += ' <div class="layui-input-inline chatinput">';
html += ' <div id="showJsonData'+i+'" class="showJsonData"></div>';
html += ' </div>';
html += ' </div>';
html += '</div>';
html += '<div class="layui-form-item">';
html += ' <div class="layui-inline">';
html += ' <label class="layui-form-label">合规情况:</label>';
html += ' <div class="layui-input-inline">';
html += ' <div id="condition' + i + '" style="width: 680px"></div>';
html += ' </div>';
html += ' </div>';
html += '</div>';
html += '<div class="layui-form-item">';
html += ' <div class="layui-inline">';
html += ' <label class="layui-form-label">违规内容:</label>';
html += ' <div class="layui-input-inline">';
html += ' <textarea class="layui-textarea" name="content' + i + '" id="content' + i +'" style="width: 680px" rows="6"></textarea>';
html += ' </div>';
html += ' </div>';
html += '</div>';
html += '<div class="layui-form-item">';
html += ' <div class="layui-inline">';
html += ' <label class="layui-form-label">合规建议:</label>';
html += ' <div class="layui-input-inline">';
html += ' <textarea class="layui-textarea" name="suggest' + i + '" id="suggest' + i +'" style="width: 680px"></textarea>';
html += ' </div>';
html += ' </div>';
html += '</div>';
element.tabAdd('tabchannel', {
title: '违规' + "(" + i + ")" //用于演示
, content: html
, id: id //实际使用一般是规定好的id这里以时间戳模拟下
})
renderSelectSchedule(setting, [], 'condition'+i)
element.tabChange('tabchannel', id);
layer.closeAll();
var newObj = {
id: i,
checktype: 1,
audio: [],
qiMsg:[],
condition: [],
}
//dataindex++;
form.render('select');
postBody.push(newObj);
});
$("#btnDel").click(function () {
if (dataindex >= 0) {
var newpostBody = [];
for (var i = 0; i < postBody.length; i++) {
if (i != dataindex) {
newpostBody.push(postBody[i]);
}
}
postBody = newpostBody;
initnewTab();
}
});
$("#checksave").click(function () {
checksave();
});
$("#checkreload").click(function () {
$("#logid").val(0);
var tabtitle = $(".layui-tab-title li");
$.each(tabtitle, function (i) {
layui.element.tabDelete('tabchannel', $(this).attr("lay-id"));
});
postBody = [];
dataindex = 0;
});
});
function TableReload() {
layui.table.reload('testReload', {
page: {
curr: 1 //重新从第 1 页开始
}
});
}
function checksave() {
var checkstatus = $("input[name='checkstatus']:checked").val();
var children = [];
for (var i = 0; i < postBody.length; i++) {
var item = postBody[i];
item.checktype = $("#checktype" + i).val();
item.content = $("#content" + i).val();
item.suggest = $("#suggest" + i).val();
children.push(item);
}
var orderselectvalue = orderselect.getValue();
if (orderselectvalue == null || orderselectvalue.length == 0) {
layer.msg('订单必填,无法保存!', { icon: 2 });
}
var orderids = [];
for (var j = 0; j < orderselectvalue.length; j++) {
orderids.push(orderselectvalue[j].value);
}
var logid = $("#logid").val();
var postdata = {
checkstatus: checkstatus,
orderids: orderids,
children: children,
id: logid
}
$.ajax({
type: "POST",
url: "CheckSave",
data: { data: JSON.stringify(postdata) },
dataType: "json",
success: function (da) {
if (da.result == true) {
layer.msg('操作成功!', { icon: 1 });
TableReload();
} else if (da.retmsg != "" || da.retmsg != undefined) {
layer.msg(da.retmsg, { icon: 2 });
$(".price_tip").show();
}
else {
layer.msg("操作失败!", { icon: 2 });
}
},
error: function () {
layer.msg('操作失败!', { icon: 2 });
}
});
}
function Choose() {
debugger
umid = "@Html.Raw(ViewBag.umid)";
dataindex = event.currentTarget.getAttribute("data-index");
var checktype = $('#checktype' + dataindex).val();
if (checktype == 2) {
winindex = layer.open({
title: '选择录音',
type: 2,
content: '/CallRecord/ChooseCallRecord?umid=' + umid,
area: ['80%', '80%']
});
} else {
if (orderinfo.Exuserid.length <= 0) {
layer.msg("当前客户没有关联外部联系人!", { icon: 7 });
return;
}
winindex = layer.open({
title: '选择企微聊天记录',
type: 2,
content: orderinfo.QiWeiUrl + "&Eid=@ViewBag.Eid",
area: ['80%', '80%']
});
}
}
function DelChatItem(item) {
var obj = postBody[dataindex];
var newChatItem = [];
for (var i = 0; i < obj.audio.length; i++) {
var recordid = obj.audio[i].recordid;
if ("chat" + recordid == item.parentNode.id) {
continue;
}
var value = obj.audio[i];
newChatItem.push(value);
}
postBody[dataindex].audio = newChatItem;
initAudio();
}
function renderSelectOrder(check, orders) {
var optionsOrder = {
el: '#selectOrder',
name: 'orderids',//表单的name属性
tips: '请选择订单',
layVerify: 'required',
toolbar: {//工具条,全选,清空,反选,自定义
show: true,
list: [
'CLEAR'
]
},
data: orders,
initValue: check,
on: function (data) {
},
};
var selectOrder = xmSelect.render(optionsOrder);
selectOrder.update({ data: orders, initValue: check });
return selectOrder;
}
function renderSelectSchedule(scheduleTree, check,eleId) {
var optionsSchedule = {
el: '#' + eleId,
name: eleId,//表单的name属性
//clickClose: true, //单选完关闭下拉框
filterable: true, //搜索
size: 'mini',
direction: 'down',
// 展开方向 下
//radio: false, //单选
height: '400px',
tree: {
show: true,
showFolderIcon: true,
showLine: true,
expandedKeys: true
},
on: function ({ arr, change }) {
var obj = postBody[dataindex];
var condition = [];
for (var i = 0; i < arr.length; i++) {
condition.push(arr[i].value);
}
obj.condition = condition;
},
data: scheduleTree,
initValue: check
};
var selectSchedule = xmSelect.render(optionsSchedule);
return selectSchedule;
}
function initAudio() {
$("#showJsonData" + dataindex).empty();
var obj = postBody[dataindex];
for (var i = 0; i < obj.audio.length; i++) {
var content = obj.audio[i].recordid;
var appendHtml = "<div class='chatItem' id=chat" + content + "><div class='chatcontent'>" + content + "</div>"
+ "<input onclick='DelChatItem(this)' type='button' class='layui-btn layui-btn-sm delchatItem icon-delmini'>"
+ "</div>";
$("#showJsonData" + dataindex).append(appendHtml);
}
}
function initextuserInfo() {
$("#showJsonData" + dataindex).empty();
var obj = postBody[dataindex];
for (var i = 0; i < obj.qiMsg.length; i++) {
//var content = obj.qiMsg[i].userid + "(" + obj.qiMsg[i].extuserid + ")" + "[" + obj.qiMsg[i].corpname + "]";
var content = obj.qiMsg[i].userid;
var appendHtml = "<div class='chatItem' id=chat" + content + "><div class='chatcontent'>" + content + "</div>"
+ "<input onclick='DelExtuserInfoItem(this)' type='button' class='layui-btn layui-btn-sm delchatItem icon-delmini'>"
+ "</div>";
$("#showJsonData" + dataindex).append(appendHtml);
}
}
function DelExtuserInfoItem(item) {
var obj = postBody[dataindex];
var newChatItem = [];
for (var i = 0; i < obj.qiMsg.length; i++) {
var content = obj.qiMsg[i].userid;
//var content = obj.qiMsg[i].userid + "(" + obj.qiMsg[i].extuserid + ")" + "[" + obj.qiMsg[i].corpname + "]";
if ("chat" + content == item.parentNode.id) {
continue;
}
var value = obj.qiMsg[i];
newChatItem.push(value);
}
postBody[dataindex].qiMsg = newChatItem;
initextuserInfo();
}
function Closed() {
layer.close(winindex);
}
//赋值
function SetAudio(uidata) {
var obj = postBody[dataindex];
for (var i = 0; i < uidata.length; i++) {
var ispass = false;
for (var j = 0; j < obj.audio.length; j++) {
if (obj.audio[j].recordid == uidata[i].Id) {
ispass = true;
break;
}
}
if (!ispass) {
var audio = {
recordid: uidata[i].Id
};
obj.audio.push(audio);
}
}
initAudio();
}
window.addEventListener("message", receiveMessage, false);
function receiveMessage(event) {
console.log(event.data);
var mydata = event.data;
if (mydata.type == "extuserInfo") {
var obj = postBody[dataindex];
for (var i = 0; i < mydata.list.length; i++) {
var ispass = false;
for (var j = 0; j < obj.qiMsg.length; j++) {
if (obj.qiMsg[j].userid == mydata.list[i].userid && obj.qiMsg[j].extuserid == mydata.list[i].extuserid) {
ispass = true;
break;
}
}
if (!ispass) {
obj.qiMsg.push(mydata.list[i]);
}
}
}
initextuserInfo();
Closed();
}
//合并列(通过一个主列来让其他次列直接合并)
function mergeRows(res, myTable) {
//表头
var cols = myTable.cols[0];
var data = res.data;
var mergeIndex = 0;//定位需要添加合并属性的行数
var mark = 1; //这里涉及到简单的运算mark是计算每次需要合并的格子数
var colManin = ['Id'];//主要合并列,
var columsIndex = [];//跟随主合并的列索引值 如果要调整顺序
var fixIndexList = [];
for (var i = 0; i < cols.length; i++) {
var item3 = cols[i], field = item3.field;
if (item3.merge) {
columsIndex.push(i);
}
if (item3.fixed == 'right') {
fixIndexList.push(i);
}
}
debugger
for (var k = 0; k < colManin.length; k++) { //这里循环所有要合并的列
var trArr = $(".layui-table-body>.layui-table").find("tr");//所有行
var colorIndex = 0;
for (var i = 1; i < res.data.length; i++) { //这里循环表格当前的数据
if (data[i][colManin[k]] === data[i - 1][colManin[k]]) { //后一行的值与前一行的值做比较,相同就需要合并
mark += 1;
for (var index = 0; index < columsIndex.length; index++) {
var nowIndex = columsIndex[index];
var tdCurArr = trArr.eq(i).find("td").eq(nowIndex);//获取当前行的当前列
var tdPreArr = trArr.eq(mergeIndex).find("td").eq(nowIndex);//获取相同列的第一列
tdPreArr.each(function () {//相同列的第一列增加rowspan属性
$(this).attr("rowspan", mark);
});
tdCurArr.each(function () {//当前行隐藏
$(this).css("display", "none");
});
}
} else {
mergeIndex = i;
mark = 1;//一旦前后两行的值不一样了那么需要合并的格子数mark就需要重新计算
colorIndex++;
}
var treq = trArr.eq(i);
if (colorIndex % 2 == 1) {
treq.each(function () {//相同列的第一列增加rowspan属性
$(this).attr("style", "background-color:azure");
});
}
}
mergeIndex = 0;
mark = 1;
}
}
function initEditModel(id,iscopy) {
$.ajax({
type: "POST",
url: "/ComplianceOrder/initEditModel",
data: { Id: id },
dataType: "json",
success: function (da) {
if (iscopy != 1) {
$("#logid").val(id);
} else {
$("#logid").val('');
}
if (da.CheckSaveDto != null) {
var checksaveDto = da.CheckSaveDto
if (checksaveDto.checkstatus == 2)
{
$("input[name='checkstatus'][value=1]").prop("checked", false);
$("input[name='checkstatus'][value=2]").prop("checked", true);
}
$('#username').val(checksaveDto.Ename);
$('#checktime').val(checksaveDto.checktime);
renderSelectOrder(checksaveDto.orderids, da.Setting.CheckOrders);
if (checksaveDto.children != null) {
postBody = checksaveDto.children;
initnewTab();
}
//initTab(checksaveDto);
layui.form.render();
layui.form.render('select');
}
},
error: function () {
layer.msg('操作失败!', { icon: 2 });
}
});
}
function initnewTab(checkSaveDto) {
var tabtitle = $(".layui-tab-title li");
$.each(tabtitle, function (i) {
layui.element.tabDelete('tabchannel', $(this).attr("lay-id"));
});
for (var i = 0; i < postBody.length; i++) {
var item = postBody[i];
var html = "";
html += '<div class="layui-form-item">';
html += ' <div class="layui-inline">';
html += ' <label class="layui-form-label">质检类型:</label>';
html += ' <div class="layui-input-inline">';
html += ' <select id="checktype' + i + '" lay-filter="isonlinebuy">';
html += ' <option value="1">企微</option>';
html += ' <option value="2">录音</option>';
html += ' </select>';
html += ' </div>';
html += ' </div>';
html += '</div>';
html += '<div class="layui-form-item">';
html += ' <div class="layui-inline">';
html += ' <label class="layui-form-label" ><a href="javascript:void(0)" onclick="Choose(this)" style="color:blue;cursor:pointer" data-index="' + i + '">员工企微ID/录音ID</a></label>';
html += ' <div class="layui-input-inline chatinput">';
html += ' <div id="showJsonData' + i + '" class="showJsonData"></div>';
html += ' </div>';
html += ' </div>';
html += '</div>';
html += '<div class="layui-form-item">';
html += ' <div class="layui-inline">';
html += ' <label class="layui-form-label">合规情况:</label>';
html += ' <div class="layui-input-inline">';
html += ' <div id="condition' + i + '" style="width: 680px"></div>';
html += ' </div>';
html += ' </div>';
html += '</div>';
html += '<div class="layui-form-item">';
html += ' <div class="layui-inline">';
html += ' <label class="layui-form-label">违规内容:</label>';
html += ' <div class="layui-input-inline">';
html += ' <textarea class="layui-textarea" name="content' + i + '" id="content' + i + '" style="width: 680px" rows="6"></textarea>';
html += ' </div>';
html += ' </div>';
html += '</div>';
html += '<div class="layui-form-item">';
html += ' <div class="layui-inline">';
html += ' <label class="layui-form-label">合规建议:</label>';
html += ' <div class="layui-input-inline">';
html += ' <textarea class="layui-textarea" name="suggest' + i + '" id="suggest' + i + '" style="width: 680px" ></textarea>';
html += ' </div>';
html += ' </div>';
html += '</div>';
layui.element.tabAdd('tabchannel', {
title: '违规' + "(" + i + ")" //用于演示
, content: html
, id: i //实际使用一般是规定好的id这里以时间戳模拟下
})
layui.element.tabChange('tabchannel', i);
$('#checktype' + i).val(item.checktype);
$('#content' + i).val(item.content);
$('#suggest' + i).val(item.suggest);
renderSelectSchedule(setting, item.condition, 'condition' + i);
dataindex = i;
layui.form.render('select');
if (item.checktype == 1) {
initextuserInfo();
} else {
initAudio();
}
}
}
</script>