This commit is contained in:
2025-02-20 14:59:35 +08:00
rodzic d7be84fac6
commit d4a3bb8ffc
2541 zmienionych plików z 336536 dodań i 0 usunięć
@@ -0,0 +1,406 @@
${Styles.htmlOverflowYAuto()}
${Scripts.src(zhiqim_uploadlarge.js)}
<script>
<!--
var attaList = ${attaList};
Z.onload(function()
{
for(var i=0; i<attaList.length; i++)
{
var obj = attaList[i];
if ("file" == obj.type && obj.isAdd)
{
initUploader(obj.id, obj.savePath);
}
if ("file" == obj.type)
{
Z("#fileType_Text_"+obj.id).click();//默认选中
}
}
});
function initUploader(fileType, path)
{//文件上传
var designId = Z("#designId").val();
if (Z.Validates.isEmpty(designId))
return;
var upload = new Z.UploadLarge();
upload.elem = "upload_" + fileType;
upload.showResult = false;
upload.fileMd5Target = 1;
upload.fileCopy = true;
upload.maxSizeMiB = 500;
upload.contextPath = "${context.getContextPath()}";
upload.setFileDir(path);
upload.onSelected = function(fileName, fileLength)
{
var ajax = new Z.Ajax();
ajax.setSync();
ajax.setClassName("UploadFilePresenter");
ajax.setMethodName("doCheckFileName");
ajax.addParam(designId);
ajax.addParam(fileType);
if ("EndFile" != fileType)
ajax.addParam(designId + "-" + fileName);
else
ajax.addParam(fileName);
ajax.execute();
if (ajax.responseStatus != 0)
{
Z.alert(ajax.responseText);
return false;
}
if ("EndFile" != fileType)
this.setFileName(designId + "-" + fileName);
else
this.setFileName(fileName);
};
upload.onCompleted = function(fileId){
var ajax = new Z.Ajax();
ajax.setClassName("UploadFilePresenter");
ajax.setMethodName("doUplaodFile");
ajax.addParam(designId);
ajax.addParam(fileId);
ajax.addParam(fileType);
ajax.setFailureAlert();
ajax.setSuccess(function()
{
var dataMap = Z.J.toObject(this.responseText);
Z("#div_" + fileType).html("");//清除;
var html = "";
var data_color = "${zmr_color_class}";
var items = dataMap.attaList;
for(var i=0;i<items.length;i++)
{
/**/
var obj = items[i];
html += '<div id="div_checkbox_'+obj.attaId+'" class="z-text-ellipsis z-w300 z-pointer"';
if ('EndFile'== fileType)
html += 'onclick="showThumImg(\''+obj.attaId+'\',\''+obj.fileType+'\')"';
html += ' title="'+obj.fileName+'">';
html += "<input name='str_" + fileType +"' type='checkbox' value ='" + obj.attaId +"' class='z-checkbox' data-role='z-checkbox' data-class='"+data_color+"'/>";
html += '<span class="z-pd6" onclick="Z(this).parent().find(\'zcover>i.z-checkbox\').click()">'+obj.fileName+'</span><br>';
html += '</div>';
}
Z("#div_" + fileType).htmlc(html);
});
ajax.setLoading(document);
ajax.execute();
};
upload.execute();
}
function doDownFile(type)
{//文件下载
var designId = Z("#designId").val();
if (Z.V.isEmpty(designId))
{
parent.Z.alert("请选择一条订单");
return;
}
var attaIds = Z.FM.getCheckBoxValue("str_" + type, "");
if (Z.V.isEmpty(attaIds))
{
parent.Z.alert("请选择需要下载的文件");
return false;
}
if(${checkeds}){
parent.Z.alert("选中多条订单不支持下载,请重新选择");
return;
}
var delType_desabled = Z("#delete_"+type).attr("disabled");
var downloadType_desabled = Z("#download_"+type).attr("disabled");
Z("#delete_"+type).attr("disabled", true);
Z("#download_"+type).attr("disabled", true);
var ajax = new Z.Ajax();
ajax.setClassName("UploadFilePresenter");
ajax.setMethodName("doDownloadFile");
ajax.addParam("attaId", attaIds);
ajax.setFailure(function(){
Z("#delete_"+type).attr("disabled", delType_desabled);
Z("#download_"+type).attr("disabled", downloadType_desabled);
Z.alert(this.responseText,null, {width:320});
});
ajax.setSuccess(function(){
Z("#delete_"+type).attr("disabled", delType_desabled);
Z("#download_"+type).attr("disabled", downloadType_desabled);
var prefix = Z.l.protocol + "//" + Z.l.host ;
Z.L.href(prefix+"/downFile.htm?attaId=" + attaIds, zCallFrame);
var mainFrame = parent.parent.document.getElementById("mainFrame");
if (mainFrame)
console.log(mainFrame.src);
// window.open(prefix+"/downFile.htm?attaId=" + attaIds, 'downFile');mainFrame
});
ajax.setLoading(document);
ajax.execute();
}
function doDeleteFile(type)
{//删除文件
var designId = Z("#designId").val();
if (Z.V.isEmpty(designId))
{
parent.Z.alert("请选择一条订单");
return;
}
var attaIds = Z.FM.getCheckBoxValue("str_" + type, "");
if (Z.V.isEmpty(attaIds))
{
parent.Z.alert("请选择需要删除的文件");
return ;
}
if(${checkeds}){
parent.Z.alert("选中多条订单不支持删除,请重新选择");
return;
}
Z.confirm("确认删除此文件吗?", function()
{
var arr = Z.AR.toArray(attaIds, ",")
var ajax = new Z.Ajax();
ajax.setClassName("UploadFilePresenter");
ajax.setMethodName("doDeleteFile");
ajax.addParam(attaIds);
ajax.setFailure(function(){Z.alert(this.responseText,null, {width:320});});
ajax.setSuccess(function(){
Z.each(arr, function(id, i){
Z("#div_checkbox_"+id).remove();
});
});
ajax.execute();
}, {width:320});
}
function showThumImg(attaId, suffix)
{
doViewOssFile(attaId);//预览文件
Z("#thumImgs").html("");//清除;
if (suffix != "pdf")
{
var html = "<img class='z-pointer' onclick='showLargeImg(this)' class='z-mg-l10' src= '"+attaId+"-0-endFile'/>";
Z("#thumImgs").html(html);
}
else
{
var ajax = new Z.Ajax();
ajax.setClassName("UploadFilePresenter");
ajax.setMethodName("getPdfPages");
ajax.addParam("attaId", attaId);
ajax.setCallback(function()
{
var html = "";
var page = parseInt(this.responseText);
for (var i=1;i<=page;i++)
{
html += "<img class='z-pointer' width='162' onclick='showLargeImg(this)' class='z-mg-l6' src= '"+attaId+"-"+i+"-endFile'/>";
}
html += "<br>";
Z("#thumImgs").html(html);
});
ajax.execute();
}
}
function doViewOssFile(attaId)
{
var ajax = new Z.Ajax();
ajax.setClassName("UploadFilePresenter");
ajax.setMethodName("doGetOssFileUrl");
ajax.addParam("attaId", attaId);
ajax.setSuccess(function(){
var ossFileUrl = this.responseText;
if (Z.V.isNotEmptyBlank(ossFileUrl))
{
var elem = document.createElement("a");
elem.href = ossFileUrl;
elem.setAttribute("target", "_blank");
elem.click();
}
});
ajax.execute();
}
function showLargeImg(thisImg)
{
var dialog = new parent.Z.Dialog();
dialog.shadow = true;
dialog.title = "图片预览";
//dialog.hasTitle = false;
dialog.fixed = true;
dialog.url = "showLargeImg.htm?imgpath="+thisImg.src;
dialog.width = parent.Z.D.clientWidth()-200;
dialog.height = parent.Z.D.clientHeight()-200;
dialog.execute();
dialog.$background.remove();
}
function doCopyProductInfo(copyType)
{
if (copyType == 1)
{//复制文件名
var designId = "${order.getDesignId()}";
var buyerNick = "${order.getBuyerNick()}";
var reciverName = "${order.getUserContact()}";
var fileName = designId+ "-";
// if (buyerNick.indexOf("-") > 0)
// {
// fileName += reciverName;
// }
// else
// {
fileName += buyerNick;
// }
if (fileName == "-")
return;
Z.copy(fileName);
top.Z.tips("复制成功");
}
else
{//复制信息
if (Z("#copy_content").length == 0)
return;
Z.copy(Z("#copy_content").text());
top.Z.tips("复制成功");
}
}
//-->
</script>
${Htmls.toCallFrame()}
<input name="designId" id="designId" value="${order.getDesignId()}" type="hidden">
<table class="z-table z-bordered-line z-pd5 zi-bd z-bg-blue z-mg-t20">
<#for item : attaList>
<#if item.getId() == "copy">
<!--复制-->
<tr class="z-h40 z-bg-gray">
<td class="z-bold" colspan="2">产品信息:
<span style="margin-left:100px">
<button type="button" id="copy" class="z-button z-yellow" onclick="doCopyProductInfo(1);">复制文件名</button>
<button type="button" id="copy" class="z-button z-cyan" onclick="doCopyProductInfo();">复制信息</button>
</span>
</td>
</tr>
<tr class="z-h50">
<#if Validates.isNotEmpty(order)>
<td id="copy_content" colspan="2">${order.getDesignId()}-${order.getBuyerNick()}-${order.getOrderText()}</td>
<#else>
<td colspan="2"></td>
</#if>
</tr>
</#if>
<#if item.getId() == "userText">
<!--客户文本-->
<tr class="z-h40 z-bg-gray">
<td class="z-bold" colspan="2">客户文本:</td>
</tr>
<tr class="z-h100">
<td colspan="2">
<textarea class="z-textarea z-w100p z-h100 ${zmr_color_class}" id="userText" name="userText" class="">${order.getUserText()}</textarea>
</td>
</tr>
</#if>
<#if item.getType() == "file">
<!-- 文件资料-->
<tr class="z-h40 z-bg-gray">
<td>
<input type="checkbox" id="box_${item.getId()}" onclick="Z.FM.doSelectCheckBox('str_${item.getId()}', this.checked);" class="z-checkbox z-mg-l2" data-role="z-checkbox" data-class="${zmr_color_class}" > <b id="fileType_Text_${item.getId()}" class="z-pointer" onclick=" Z(this).parent().find('zcover>i.z-checkbox').click();">${item.getName()}</b>
</td>
<td class="z-text-right">
<#if item.getId() == "EndFile" && endFileLink != null>
<button id="copyLink_${item.getId()}" class="z-button z-cyan z-pd3" onclick="Z.copy('${endFileLink}');top.Z.tips('复制成功')">发送链接</span></button>
</#if>
<button id="upload_${item.getId()}" class="z-button z-pd3 ${zmr_color_class}" <#if !item.isAdd()>disabled=true</#if>>添加</button>
<button id="download_${item.getId()}" class="z-button z-orange z-pd3" onclick="doDownFile('${item.getId()}');">下载</button>
<button id="delete_${item.getId()}" class="z-button z-red z-pd3" onclick="doDeleteFile('${item.getId()}');" <#if !item.isDel()>disabled=true</#if>>删除</button>
</td>
</tr>
<tr class="z-h40">
<td colspan="2">
<div id="div_${item.getId()}" class="z-overflow-y-auto <#if item.getName()=="客户素材">z-h100<#elseif item.getName()=="印刷文件">z-h50<#else>z-h60</#if>">
<#for atta : fileList>
<#if Validates.isEqual(atta.getAttaModul(), item.getId())>
<div id="div_checkbox_${atta.getAttaId()}" class="z-text-ellipsis z-w300 z-pointer" onclick="<#if item.getId()=="EndFile"> showThumImg('${atta.getAttaId()}', '${atta.getFileType()}')</#if>" title="${atta.getFileName()}">
<input name="str_${item.getId()}" type="checkbox" data-attaId="${atta.getAttaId()}" data-attaUrl="${atta.getOssUrl()}" data-fileName="${atta.getFileName()}" class="z-checkbox" data-role="z-checkbox" data-class="${zmr_color_class}" value ="${atta.getAttaId()}"><span class="z-pd6" onclick="Z(this).parent().find('zcover>i.z-checkbox').click();">${atta.getFileName()}</span><br>
</div>
</#if>
</#for>
</div>
</td>
</tr>
</#if>
<#if item.getType() == "thumFile">
<!--缩略图-->
<tr class="z-h40 z-bg-gray">
<td class="z-bold" colspan="2">${item.getName()}</td>
</tr>
<tr height="200px" valign="top">
<td colspan="2">
<div id="thumImgs"><#if Validates.isNotEmpty(item.getSavePath())><img src="${item.getSavePath()}"></#if></div>
</td>
</tr>
</#if>
<#if item.getType() == "firstThumFile">
<!--初稿缩略图-->
<tr class="z-h40 z-bg-gray">
<td class="z-bold" colspan="2">${item.getName()}</td>
</tr>
<tr height="200px" valign="top">
<td colspan="2">
<#if order != null>
<div><img src="${order.getDesignId()}-FristThumFile.png"></div>
</#if>
</td>
</tr>
</#if>
<#if item.getId() == "userNotice">
<!--注意事项-->
<tr class="z-h40 z-bg-gray">
<td class="z-bold" colspan="2">注意事项:</td>
</tr>
<tr class="z-h80" >
<td colspan="2">
<textarea id="userNotice" name="userNotice" class="z-textarea z-w100p z-h80 ${zmr_color_class}">${order.getUserNotice()}</textarea>
</td>
</tr>
</#if>
</#for>
<!--客服留言-->
<tr class="z-h40 z-bg-gray">
<td class="z-bold" colspan="2">客服留言:</td>
</tr>
<tr class="z-h80">
<td colspan="2">
<textarea id="servicesMessage" name="servicesMessage" class="z-textarea z-w100p z-h80 ${zmr_color_class}">${order.getServicesMessage()}</textarea>
</td>
</tr>
</table>
@@ -0,0 +1,237 @@
${Scripts.src("/zinc/js/global_2019010801.js")}
<script>
function quickContact()
{//快捷联系
var designId = Z.FM.getChecked("designId");
if (Z.V.isEmpty(designId))
{
Z.alert("请选择一条订单");
return;
}
var ajax = new Z.Ajax();
ajax.setClassName("OrderPresenter");
ajax.setMethodName("quickContact");
ajax.addParam("designId", designId);
ajax.setFailureAlert();
ajax.setSuccess(function(){
var obj = Z.J.toObject(this.responseText);
console.log(obj);
var resultHtml = obj.resultHtml;
if (!Z("#quickContact_dialog")[0])
{
var dialog = new Z.Dialog();
dialog.title = '<span id="quickContact_title" class="z-bold"></span>';
dialog.text = '<div id="quickContact_dialog"></div>';
dialog.width = 1100;
dialog.height = 520;
dialog.shadow = false;
dialog.execute();
dialog.$background.remove();
console.log(dialog)
}
Z("#quickContact_dialog").htmlc(resultHtml);
Z("#quickContact_title").htmlc(Z("#title_content").html());
});
ajax.setLoading("quickContactBtn", '<i class="z-font z-add"></i>正在查询', {disabled:true});
ajax.execute();
}
function doContactMobile(mobile, defaultValue, orderId)
{//快捷联系 发送短信
if (Z.V.isEmptyBlank(mobile))
{
Z.alert("无效手机号");
return;
}
if (Z.V.isEmptyBlank(defaultValue))
{
defaultValue = '';
}
Z.prompt('发送短信至:'+mobile , defaultValue,function(value)
{
if (Z.V.isEmptyBlank(value))
{
Z.alert("短信内容不能为空", function()
{
doContactMobile(mobile, defaultValue);
});
}
else
{
var ajax = new Z.Ajax();
ajax.setClassName("OrderPresenter");
ajax.setMethodName("doContactMobile");
ajax.addParam("orderId", orderId);
ajax.addParam("mobile", mobile);
ajax.addParam("notes", value);
ajax.setFailureAlert();
ajax.setSuccess(function(){Z.tips("发送成功");});
ajax.execute();
}
},{type:'textarea'});
}
function doAssignDesigner()
{//指定设计师
var designId = Z.FM.getChecked("designId");
if (Z.V.isEmpty(designId))
{
Z.alert("请选择一条订单");
return;
}
var dialog = new Z.Dialog();
dialog.title = "指定设计师";
dialog.url = "/assignDesigner.htm?designId=" + designId;
dialog.width = 600;
dialog.height = 400;
dialog.execute();
}
function doProcessMessage(){
var designId = Z.FM.getChecked("designId");
var id = Z("#id_"+designId).val();
var ajax = new Z.Ajax();
ajax.setClassName("MessagePresenter");
ajax.setMethodName("doProcessMessage");
ajax.addParam("id", id);
ajax.setFailureAlert();
ajax.setSuccess(function(){Z.success("处理成功",function(){ location.reload(); });});
ajax.execute();
}
</script>
${zhiqim_manager_breadcrumb("待办事项")}
${zhiqim_manager_content()}
<#-- 导航栏 -->
<div class="z-tabnav-main z-blue z-mg-b20">
<nav>
<ul>
<li class="z-active">我的待办事项</li>
</ul>
</nav>
</div>
<#-- 左侧功能 -->
<div id="left" class="z-overflow-y-auto z-overflow-x-hidden z-relative-left">
<#-- 查询条件 -->
${zhiqim_manager_title("查询条件")}
<form action="/manager/backLogWork.htm" method="post">
<table class="z-table z-bordered z-pd6 z-bg-white">
<tr class="z-h40">
<td width="30%">订单号:<input name="designId" class="${zmr_color_class} z-input z-w160 z-mg-l4" value="${designId}" maxlength="64" placeholder="订单号"></td>
<td>旺 旺 号:<input name="buyerNick" class="${zmr_color_class} z-input z-w180 z-mg-l4" value="${buyerNick}" maxlength="64" placeholder="旺旺号"></td>
<td>
发出时间:<input id="startDate" name="startDate" class="z-input z-w90 ${zmr_color_class}" readonly="true" onfocus="Z.date(this);" value="${startDate}">&nbsp;-&nbsp;
<input id="endDate" name="endDate" class="z-input z-mg-l3 z-w90 ${zmr_color_class}" readonly="true" onfocus="Z.date(this);" value="${endDate}">
</td>
</tr>
<tr>
<td>
接收人:&nbsp;<select name="consumerCode" class="z-select z-w160" data-role="z-select-search" data-class="${zmr_color_class}">
<option value="">全部</option>
<#for item : operatorList>
<option value="${item.getOperatorCode()}" <#if consumerCode == item.getOperatorCode()>selected</#if>>${item.getOperatorCode()}</option>
</#for>
</select>
</td>
<td>
处理状态:<select name="consumerState" class="z-select z-w180" data-role="z-select" data-class="${zmr_color_class}">
<option value="">全部</option>
<option value="0" <#if consumerState == 0>selected</#if>>未处理</option>
<option value="1" <#if consumerState == 1>selected</#if>>已处理</option>
</select>
</td>
<td>
催稿主题:<select name="topic" class="z-select z-w200" data-role="z-select" data-class="${zmr_color_class}">
<option value="">全部</option>
<#for item : MessageThemeConstants.topicList>
<option value="${item.value()}" <#if item.value() == topic>selected</#if>>${item.desc()}</option>
</#for>
</select>
</td>
</tr>
<tr>
<td colspan="1">催稿号:<input name="id" class="${zmr_color_class} z-input z-w160 z-mg-l4" value="${id}" maxlength="64" placeholder="催稿单号"></td>
<td colspan="2"><button class="z-button z-large z-w120 z-mg-r15 ${zmr_color_class}">查询</button><button class="z-button z-large" type="button" onclick="Z.FM.clearForm(this.form);">清空</button></td>
</tr>
</table>
</form>
<#-- 操作功能 -->
<div class="z-w100p z-mg-t10 z-mg-b3">
<button type="button" class="z-button z-mg-t3 z-mg-r6 ${zmr_color_class}" onclick="Global.openWangWang();"><img src="/zinc/images/wangwang.png">旺旺联系</button>
<button id="quickContactBtn" type="button" class="z-button z-mg-t3 z-mg-r6 z-cyan" onclick="quickContact();"><i class="z-font z-add"></i>快捷联系人</button>
<#if ZmrPathRule.check(request, "/assignDesigner.htm")><button type="button" class="z-button z-mg-t3 z-mg-r6 ${zmr_color_class}" onclick="doAssignDesigner();"><i class="z-font z-modify"></i>指定设计师</button></#if>
<button type="button" class="z-button z-mg-t3 z-mg-r6 z-green" onclick="doProcessMessage();" id="doProcessMessage"><i class="z-font z-success"></i>确认处理</button>
</div>
<#-- 列表-->
<div class="z-overflow-auto z-bd-r">
<table class="z-table z-bordered z-h40-tr z-pd5 zi-bd-r-none z-bg-white z-text-center">
<tr bgcolor="${zmr_thead_bgcolor}">
<td width="60">选择</td>
<td width="120">催稿单号</td>
<td width="130">订单号</td>
<td width="140">旺旺号</td>
<td width="150">主题</td>
<td width="110">发送者</td>
<td width="130">发送时间</td>
<td width="320">消息内容</td>
<td width="110">接收者</td>
<td width="110">订单状态</td>
<td width="110">处理状态</td>
<td width="130">处理时间</td>
<td width="200">备注</td>
</tr>
${zhiqim_manager_tr_no_record(pageResult, 20, "暂时没有催稿信息")}
<#for item : pageResult.list()>
<input id="buyerNick_${item.getDesignId()}" type="hidden" value="${item.getBuyerNick()}">
<input id="id_${item.getDesignId()}" type="hidden" value="${item.getId()}">
<tr class="z-pointer" ${zhiqim_manager_tr_onmouse()} ${zhiqim_manager_tr_click_radio()} <#if item.getConsumerState() == 1>style="color:#AAAAAA"</#if>>
<td><input name="designId" type="radio" data-role="z-radio" data-class="${zmr_color_class}" value="${item.getDesignId()}"></td>
<td onclick="Z.copy(Z.S.trim(Z(this).html()));Z.tips({text:'已复制催稿单号', width: 180});">${item.getId()}</td>
<td><div onclick="Z.copy(Z.S.trim(Z(this).html()));Z.tips({text:'已复制订单号', width: 160});" style="display:inline;">${item.getDesignId()}</div>
<#if ordMap.get(item.getDesignId()).getReDesignSrcId() gt 0><span style="color: red;font-size:16px;font-weight: bold"> 补 </span></#if>
<#if ordMap.get(item.getDesignId()).isUrgent()><span style="color: red;font-size:16px;font-weight: bold"> 急 </span></#if>
<#if ordMap.get(item.getDesignId()).isHighQualityOrder()><span style="color: red;font-size:16px;font-weight: bold"> 优 </span></#if>
<#if ordMap.get(item.getDesignId()).getIsOldUser() gt 0><span style="color: #9D24D7;font-size:16px;font-weight: bold"> 老 </span></#if>
<#if !(ordMap.get(item.getDesignId()).getAmount() lt 30000)><span style="color:#FF34B3;font-size:16px;font-weight: bold"> 大 </span></#if>
<#if ordMap.get(item.getDesignId()).getShowRedMark() == 1><span><img src="/zinc/images/red_exclamation_mark.png" title="该订单已在淘宝退款"></span></#if>
</td>
<td>${item.getBuyerNick()}</td>
<td>${MessageThemeConstants.getName(item.getTopic())}</td>
<td>${item.getProductionCode()}</td>
<td>${Sqls.toDateTimeString(item.getProductionTime())}</td>
<td>${item.getMessageBody()}</td>
<td>${item.getConsumerCode()}</td>
<td>${StatusConstants.getStatus(ordMap.get(item.getDesignId()).getStatus())}</td>
<td>
<#if item.getConsumerState() == 0>
<span class='z-pd3 z-color-white z-show-ib z-w80' style='border-radius:5px;background: #FF0000 ;'>未处理</span>
<#elseif item.getConsumerState() == 1>
<span class='z-pd3 z-color-white z-show-ib z-w80' style='border-radius:5px;background: #AAAAAA ;'>已处理</span>
<#else></#if>
</td>
<td>${Sqls.toDateTimeString(item.getConsumerTime())}</td>
<td>${item.getRemark()}</td>
</tr>
</#for>
</table>
</div>
${zhiqim_manager_paging(pageResult, "/manager/backLogWork.htm")}
</div>
${zhiqim_manager_content_end()}
<#-- 联系旺旺&联系QQ弹窗框 -->
<iframe id="openFrm" class="z-hide" src="about:blank"></iframe>
@@ -0,0 +1,484 @@
${zhiqim_manager_content()}
<style>
.leftDiv {
margin: 0px -10px;
}
.card {
margin: 10px;
display: flex;
flex-direction: column;
width: 287.5px;
height: 100px;
border-radius: 2px;
background-color: #fff;
box-shadow: 0 1px 2px 0 rgba(0,0,0,.05);
}
.cardHeard {
display: flex;
position: relative;
line-height: 35px;
padding: 0 15px;
border-bottom: 1px solid #DCDCDC;
color: #333;
border-radius: 2px 2px 0 0;
font-size: 14px;
align-items: center;
justify-content: space-between;
}
.cardHeard img {
width: 25px;
}
.cardContent {
margin-top: 10px;
position: relative;
padding: 10px 15px;
line-height: 24px;
display: flex;
align-items: center;
flex: 1;
justify-content: center;
}
.cardContent img {
height: 70px;
}
.cardContent span {
text-align: center;
font-size: 40px;
color: #1296db;
}
.cardContent table {
width: 100%;
color: #666;
border-spacing: 0;
}
.cardContent table tbody{
text-align: center;
}
.cardContent table tr{
border-width: 1px;
border-style: solid;
border-color: #e6e6e6;
}
.cardContent table tr td:nth-child(1) {
padding: 0;
}
.cardContent table tr td:last-child {
padding: 0;
padding-left: 45px;
text-align: left;
}
.cardContent table tr td:nth-child(1) img {
width: 35px;
height: 35px;
}
.cardContent table tr td:last-child img {
width: 15px;
height: 15px;
margin-bottom: 3px;
}
.cardContent table th, .cardContent table td{
position: relative;
padding: 9px 15px;
min-height: 20px;
line-height: 20px;
font-size: 14px;
border-width: 0 0 1px;
border-style: solid;
border-color: #e6e6e6;
display: table-cell;
vertical-align: inherit;
-webkit-tap-highlight-color: rgba(0,0,0,0);
margin: 0;
}
.cardFooter {
line-height: 25px;
text-align: right;
bottom: 5px;
right: 15px;
position: absolute;
}
.cardFooter a {
width: 20px;
text-align: center;
display: inline-block;
}
.cardFooter .footerActivate {
color: #1296db;
}
.leftDiv .card {
display: inline-block;
}
.rightDiv {
}
.noticeDiv {
width: 770px;
height: 490px;
padding-top: 10px;
}
#noticeTitle {
text-align: center;
}
#releaseTime {
text-align: center;
color: #949494;
}
#noticeContent {
width: 93%;
margin-left: 5%;
font-size: 17px;
margin-top: 10px;
}
.levelTitle {
background-color: #fff;
padding: 10px 10px 10px 20px;
}
.levelTitle > div {
display: inline-table;
font-size: 16px;
}
.levelTitle > div:nth-child(1){
width: 21%;
border-right: 1px #cccccc solid;
}
.levelTitle > div:nth-child(2){
width: 21%;
text-align: center;
}
.levelTitle > div:not(.levelDiv) div{
font-size: 20px;
line-height: 40px;
margin-top: 5px;
}
.levelDiv {
min-height: 65px;
}
.levelDiv div {
height: 50%;
display: table-row;
font-size: 16px;
}
.levelDiv div a{
margin-left: 35px;
color: #235fce;
}
.virtualAccount{
background-color: #fff;
height: 134px;
width: 734px;
margin-left: 18px;
}
.virtualAccountSumMoney{
font-size: 23px;
font-weight: 700;
color: #00a2eb;
cursor:pointer;
display:inline-block;
}
.virtualAccountUsableMoney{
font-size: 23px;
font-weight: 700;
color: #00a2eb;
cursor:pointer;
display:inline-block;
}
.virtualAccountFreezeMoney{
font-size: 23px;
font-weight: 700;
cursor:pointer;
display:inline-block;
color:red;
}
.virtualAccountTitle{
padding: 12px 0px;
font-size: 15px;
}
.aLen{
width: 420px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
display: block;
float: left;
}
}
</style>
<script>
var ajax = new Z.Ajax();
ajax.setClassName("ConsolePresenter");
ajax.setMethodName("getTodayOrderInfo");
ajax.setFailureAlert();
ajax.setSuccess(function(responseText){
var data = eval('('+responseText+')');
Z("#todayOrderNumber").text(data[0]);
Z("#todayOrderEndNumber").text(data[1]);
Z("#todayOrderRefundNumber").text(data[2]);
});
ajax.execute();
</script>
<script>
//查询本月订单数据
var ajax = new Z.Ajax();
ajax.setClassName("ConsolePresenter");
ajax.setMethodName("getCurrentMonthOrderInfo");
ajax.setFailureAlert();
ajax.setSuccess(function(responseText){
var data = eval('('+responseText+')');
Z("#currentMonthOrderNumber").text(data[0]);
Z("#currentMonthOrderEndNumber").text(data[1]);
Z("#currentMonthOrderRefundNumber").text(data[2]);
var currentMonthEnd = data[1] == 0 ? 0 : data[1]/data[0];
var num = new Number(currentMonthEnd * 100);
currentMonthEnd = num.toFixed(2)
var currentMonthOrderRefund = data[2] == 0 ? 0 : data[2]/data[0];
var num1 = new Number(currentMonthOrderRefund * 100);
currentMonthOrderRefund = num1.toFixed(2)
Z("#currentMonthEndPercentage").text(currentMonthEnd + "%");
Z("#currentMonthOrderRefundPercentage").text(currentMonthOrderRefund + "%");
if(currentMonthEnd < 93){
Z("#currentMonthEndPercentage").css("color","red");
} else {
Z("#currentMonthEndPercentage").css("color","green");
}
if(currentMonthOrderRefund > 6){
Z("#currentMonthOrderRefundPercentage").css("color","red");
} else {
Z("#currentMonthOrderRefundPercentage").css("color","green");
}
var ajax2 = new Z.Ajax();
ajax2.setClassName("ConsolePresenter");
ajax2.setMethodName("getLastMonthOrderInfo");
ajax2.setFailureAlert();
ajax2.setSuccess(function(responseText){
var data2 = eval('('+responseText+')');
var lastMonthEnd = data2[1] == 0 ? 0 : data2[1]/data2[0];
var lastMonthOrderRefund = data2[2] == 0 ? 0 : data2[2]/data2[0];
var num2 = new Number(lastMonthEnd * 100);
lastMonthEnd = num2.toFixed(2)
var num3 = new Number(lastMonthOrderRefund * 100);
lastMonthOrderRefund = num3.toFixed(2)
if(currentMonthEnd > lastMonthEnd){
Z("#currentMonthEndPercentage").next().text("↑").css("color","green");
} else if(currentMonthEnd < lastMonthEnd){
Z("#currentMonthEndPercentage").next().text("↓").css("color","red");
}
if(currentMonthOrderRefund > lastMonthOrderRefund){
Z("#currentMonthOrderRefundPercentage").next().text("↑").css("color","red");
} else if(currentMonthOrderRefund < lastMonthOrderRefund){
Z("#currentMonthOrderRefundPercentage").next().text("↓").css("color","green");
}
});
ajax2.execute();
});
ajax.execute();
</script>
<script>
var ajax = new Z.Ajax();
ajax.setClassName("ConsolePresenter");
ajax.setMethodName("getLastMonthOrderInfo");
ajax.setFailureAlert();
ajax.setSuccess(function(responseText){
var data = eval('('+responseText+')');
Z("#lastMonthOrderNumber").text(data[0]);
Z("#lastMonthOrderEndNumber").text(data[1]);
Z("#lastMonthOrderRefundNumber").text(data[2]);
});
ajax.execute();
</script>
<script>
var ajax = new Z.Ajax();
ajax.setClassName("ConsolePresenter");
ajax.setMethodName("getUndoneOrderInfo");
ajax.setFailureAlert();
ajax.setSuccess(function(responseText){
var data = eval('('+responseText+')');
Z("#undoneOrder").text("(总计"+data[0]+"单)");
Z("#undoneOrder24").text(data[1]);
Z("#undoneOrder24-48").text(data[2]);
Z("#undoneOrder48").text(data[3]);
});
ajax.execute();
</script>
<div style="display: flex;justify-content: center;">
<div style="width: 60%;">
<div class="levelTitle" style="width: 910px">
<div>
本月定稿率
<div><span id="currentMonthEndPercentage"></span><span></span></div>
</div>
<div>
本月退款率
<div><span id="currentMonthOrderRefundPercentage"></span><span></span></div>
</div>
</div>
<div style="margin: 20px 10px 0px 10px;font-size: 16px;">订单概述</div>
<div class="leftDiv">
<div class="card" id="todayOrder">
<div class="cardHeard">
今日接单量
</div>
<div class="cardContent">
<span id="todayOrderNumber"></span>
<span style="font-size: 30px;">单</span>
</div>
</div>
<div class="card" id="todayOrderEnd">
<div class="cardHeard">
今日定稿量
</div>
<div class="cardContent">
<span id="todayOrderEndNumber"></span>
<span style="font-size: 30px;">单</span>
</div>
</div>
<div class="card" id="todayOrderRefund">
<div class="cardHeard">
今日退款量
</div>
<div class="cardContent">
<span id="todayOrderRefundNumber"></span>
<span style="font-size: 30px;">单</span>
</div>
</div>
<div class="card" id="currentMonthOrder">
<div class="cardHeard">
本月接单量
</div>
<div class="cardContent">
<span id="currentMonthOrderNumber"></span>
<span style="font-size: 30px;">单</span>
</div>
</div>
<div class="card" id="todayOrderEnd">
<div class="cardHeard">
本月定稿量
<span style="height:30px" class="z-pointer" data-role="z-tooltip" data-options="placement:top;align:left;width:350px;" data-text="只统计本月接单定稿量;<br/>若是上月接的单,本月定稿的情况,此单将不会统计到本月定稿量"><svg t="1618819497927" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4064" width="28"><path d="M512 127.9c51.9 0 102.2 10.1 149.5 30.2 45.7 19.3 86.8 47 122.1 82.3s63 76.4 82.3 122.1c20 47.3 30.2 97.6 30.2 149.5S886 614.2 865.9 661.5c-19.3 45.7-47 86.8-82.3 122.1s-76.4 63-122.1 82.3c-47.3 20-97.6 30.2-149.5 30.2S409.8 886 362.5 865.9c-45.7-19.3-86.8-47-122.1-82.3s-63-76.4-82.3-122.1c-20-47.3-30.2-97.6-30.2-149.5s10.1-102.2 30.2-149.5c19.3-45.7 47-86.8 82.3-122.1s76.4-63 122.1-82.3c47.3-20 97.6-30.2 149.5-30.2m0-64C264.5 63.9 63.9 264.5 63.9 512S264.5 960.1 512 960.1 960.1 759.5 960.1 512 759.5 63.9 512 63.9z" fill="#1296db" p-id="4065"></path><path d="M480 736h64v64h-64zM476.9 686.3c-0.3-9.3-0.4-42.2-0.4-46.8 0-27.3 3.9-50.8 11.6-70.6 5.7-14.9 14.8-30 27.4-45.1 9.3-11.1 25.9-27.2 50-48.4 24-21.2 39.7-38.1 46.9-50.7s10.8-26.4 10.8-41.3c0-27-10.5-50.7-31.6-71.2-21.1-20.4-46.9-30.7-77.5-30.7-29.6 0-54.3 9.3-74.1 27.8-19.8 18.5-32.8 47.4-39 86.8l-71.4-8.5c6.4-52.7 25.5-93.1 57.3-121.1s73.7-42 125.9-42c55.3 0 99.4 15 132.3 45.1 32.9 30.1 49.4 66.5 49.4 109.2 0 24.7-5.8 47.4-17.4 68.3s-34.2 46.2-67.9 76c-22.6 20.1-37.4 34.8-44.4 44.4-6.9 9.5-12.1 20.4-15.4 32.8-3.3 12.3-5.3 58.4-5.8 86.2h-66.7v-0.2z" fill="#1296db" p-id="4066"></path></svg>
</div>
<div class="cardContent">
<span id="currentMonthOrderEndNumber"></span>
<span style="font-size: 30px;">单</span>
</div>
</div>
<div class="card" id="currentMonthOrderRefund">
<div class="cardHeard">
本月退款量
</div>
<div class="cardContent">
<span id="currentMonthOrderRefundNumber"></span>
<span style="font-size: 30px;">单</span>
</div>
</div>
<div class="card" id="lastMonthOrder">
<div class="cardHeard">
上月接单量
</div>
<div class="cardContent">
<span id="lastMonthOrderNumber"></span>
<span style="font-size: 30px;">单</span>
</div>
</div>
<div class="card" id="lastMonthOrderEnd">
<div class="cardHeard">
上月定稿量
</div>
<div class="cardContent">
<span id="lastMonthOrderEndNumber"></span>
<span style="font-size: 30px;">单</span>
</div>
</div>
<div class="card" id="lastMonthOrderRefund">
<div class="cardHeard">
上月退款量
</div>
<div class="cardContent">
<span id="lastMonthOrderRefundNumber"></span>
<span style="font-size: 30px;">单</span>
</div>
</div>
</div>
<div style="margin: 10px 10px 0px 10px;font-size: 16px;">未完成订单<span id="undoneOrder" style="color: #bd0000;font-size: 10px;"></span></div>
<div class="leftDiv">
<div class="card">
<div class="cardHeard">
24小时内未完成
</div>
<div class="cardContent">
<span id="undoneOrder24"></span>
<span style="font-size: 30px;">单</span>
</div>
</div>
<div class="card">
<div class="cardHeard">
24-48小时未完成
</div>
<div class="cardContent">
<span id="undoneOrder24-48"></span>
<span style="font-size: 30px;">单</span>
</div>
</div>
<div class="card">
<div class="cardHeard">
48小时以上未完成
</div>
<div class="cardContent">
<span id="undoneOrder48"></span>
<span style="font-size: 30px;">单</span>
</div>
</div>
</div>
<div id="undoneOrder"></div>
</div>
</div>
${zhiqim_manager_content_end()}
@@ -0,0 +1,25 @@
${zhiqim_manager_breadcrumb("公告列表")}
${zhiqim_manager_content()}
${sweet_alert_reuse_method()}
<#-- 列表 -->
<table class="z-table z-bordered z-mg-t20 z-pd10 z-bg-white z-lh150p z-text-center">
<tr class="z-h40" bgcolor="${zmr_thead_bgcolor}">
<td width="15%">公告标题</td>
<td width="*">公告内容</td>
<td width="10%">发布时间</td>
</tr>
<#for item : result.list()>
<tr class="z-h60" bgcolor="${zhiqim_manager_tr_bg(item_index)}">
<td>#{item.getNoticeTitle()}</td>
<td>#{item.getNoticeContent()}</td>
<td>#{Sqls.toDateTimeString(item.getReleaseTime())}</td>
</tr>
</#for>
${zhiqim_manager_tr_no_record(result, 10, "暂时没有公告")}
</table>
<table class="z-table z-bordered zi-bd-t-none z-bg-white">
<tr class="z-h50">
<td><div class="z-float-right z-mg-r10">${PagingGo.toHtmlLink(result)}</div></td>
</tr>
</table>
${zhiqim_manager_content_end()}
@@ -0,0 +1,136 @@
${zhiqim_manager_history("operator.htm")}
${request.getValidateScript()}
<script>
var dialog;
function doRandomPass()
{
var random = Z.random(4, 4) + Z.random(1, 9) + Z.random(3, 1);
Z("#randomPass").text(random);
Z(theForm.operatorPass).val(random);
}
function doSumbitOperator(form){
var form = document.getElementById("operatorForm");
if(validateForm(form)){
var ajax = new Z.Ajax();
ajax.setContextPath("${context.getContextPath()}");
ajax.setClassName("OperatorOrderPresenter");
ajax.setMethodName("operatorUpdate");
ajax.setParamForm(form);
ajax.setFailure(function(){
var msg = this.responseText;
if(msg.indexOf("请注意") == -1){
Z.failure(msg);
} else{
dialog = new Z.Dialog();
dialog.id = "operatorDialog";
dialog.title = "失败";
dialog.text = '<div id="dialog_content"></div>';
dialog.width = 450;
dialog.height = 120;
dialog.execute();
dialog.$background.remove();//去边框
Z("#dialog_content").parent().htmlc(`
<div class="z-container">
<i class="z-ico z-failure"></i>
<span>
<textarea class="z-bd-none z-overflow-hidden z-w100p zi-pd0 zi-px14 z-text-break" style="height:44px;line-height:22px;" readonly="">`+ msg +`</textarea>
</span>
</div>
<div class="z-console">
<button type="button" class="z-button z-blue z-cancel" onclick="downloadErpOperatorOrder();">下载未处理订单</button>
</div>
`);
}
});
ajax.setSuccessAlertReloadParent("修改成功");
ajax.execute();
}
return false;
}
function downloadErpOperatorOrder(){
Z("#theForm")[0].action = "/downloadDesignOperatorOrder.htm";
Z("#theForm")[0].submit();
dialog.close();
}
</script>
${zhiqim_manager_breadcrumb_parent("operator.htm" "操作员管理" "修改操作员")}
${zhiqim_manager_content()}
<form name="theForm" method="post" id="theForm" style="display:none;">
<input type="hidden" name="operatorCode" value="#{operator.getOperatorCode()}">
</form>
<form name="theForm" onsubmit="return false;" data-role="z-call-frame" id="operatorForm">
<input type="text" class="z-hidden-fixed"/>
<input type="password" class="z-hidden-fixed"/>
<input name="operatorCode" type="hidden" value="${operator.getOperatorCode()}">
<table class="z-table z-bordered z-h50-tr z-pd10 z-lh150p z-bg-white">
<tr class="zi-h40 z-bg-gray z-bold">
<td colspan="2">修改操作员</td>
</tr>
<tr>
<td width="40%">操作员编码:</td>
<td width="*">${operator.getOperatorCode()}</td>
</tr>
<tr>
<td>操作员名称:<span class="z-color-999">64位不定长字符)</span></td>
<td><input name="operatorName" class="z-input z-w300 ${zmr_color_class}" value="#{operator.getOperatorName()}" maxlength="64"><span class="z-color-red">&nbsp;*</span></td>
</tr>
<tr>
<td>操作员密码:<span class="z-color-999">(为空表示不修改,如果修改请输入6-16位密码,大小写字母数字特殊字符必须四选三,特殊字符支持<span class="z-samp">._-`~!@#$%</span></span></td>
<td><input name="operatorPass" type="password" class="z-input z-w300 ${zmr_color_class}" maxlength="16">&nbsp<button type="button" class="z-button z-h30" onclick="doRandomPass()">随机</button>&nbsp<span id="randomPass" class="z-samp"></span></td>
</tr>
<tr>
<td>操作员状态:<span class="z-color-999">(停用或正常)</span></td>
<td>
<select name="operatorStatus" class="z-select z-w300" data-role="z-select" data-class="${zmr_color_class}">
<option value="0" <#if operator.getOperatorStatus()=0>selected</#if>>正常</option>
<option value="1" <#if operator.getOperatorStatus()=1>selected</#if>>停用</option>
</select>
<span class="z-color-red">&nbsp;*</span>
</td>
</tr>
<tr>
<td>操作员手机号:</td>
<td><input name="operatorMobile" class="z-input z-w300 ${zmr_color_class}" value="${operator.getOperatorMobile()}" maxlength="21"><span class="z-color-red">&nbsp;*</span></td>
</tr>
<tr>
<td>操作员个人微信号:</td>
<td><input name="operatorWxcode" class="z-input z-w300 ${zmr_color_class}" value="${operator.getOperatorWxcode()}" maxlength="64"><span class="z-color-red">&nbsp;*</span></td>
</tr>
<#if ZmrSuperAdminRule.check(request)>
<tr>
<td>操作员类型:<span class="z-color-999">(管理员或操作员)</span></td>
<td>
<select name="operatorType" class="z-select z-w300" data-role="z-select" data-class="${zmr_color_class}" >
<option value="2" <#if operator.getOperatorType()==2>selected</#if>>操作员</option>
<option value="1" <#if operator.getOperatorType()==1>selected</#if>>管理员</option>
</select>
<span class="z-color-red">&nbsp;*</span>
</td>
</tr>
<#else>
<tr>
<td>操作员类型:<span class="z-color-999"></span></td>
<td>
<input type="hidden" name="operatorType" value="${operator.getOperatorType()}">
<#if operator.getOperatorType()=2>操作员</#if>
<#if operator.getOperatorType()=1><span class="z-color-red">管理员</span></#if>
<#if operator.getOperatorType()=0><span class="z-color-red">超级管理员</span></#if>
</td>
</tr>
</#if>
</table>
<table class="z-table zi-bd zi-bd-t-none z-pd10 z-bg-white">
<tbody><tr class="z-h80">
<td width="40%"><a href="javascript:returnHistory();">返回上一页</a></td>
<td width="*"><button type="button" onclick="doSumbitOperator();" class="z-button z-large z-w150 z-blue">提交</button></td>
</tr>
</tbody></table>
</form>
${zhiqim_manager_content_end()}
@@ -0,0 +1,222 @@
${Styles.src(zhiqim.css)}
${Scripts.src(zhiqim.js)}
<link rel="stylesheet" type="text/css" href="zinc/css/base.css">
<script src="zinc/js/jquery-1.11.1.min.js"></script>
<script>
//提交注册
function insertReg()
{
var operatorCode = Z("#operatorCode").val();
if (Z.V.isEmptyBlank(operatorCode))
{
Z.failure("用户昵称不能为空!");
Z("#operatorCode").focus();
return;
}
if(operatorCode.length <2 || operatorCode.length >8 || escape(operatorCode).indexOf( "%u" )<0)
{
Z.failure("用户昵称不合法,长度要求:2-8位且以汉字命名(可以包含数字+字母)。");
Z("#operatorCode").focus();
return;
}
var operatorMobile = Z("#operatorMobile").val();
if (Z.V.isEmptyBlank(operatorMobile))
{
Z.failure("手机号不能为空!");
Z("#operatorMobile").focus();
return;
}
var smsCode = Z("#smsCode").val();
if (Z.V.isEmptyBlank(smsCode))
{
Z.failure("验证码不能为空!");
return;
}
var operatorPass = Z("#operatorPass").val();
if (Z.V.isEmptyBlank(operatorPass))
{
Z.failure("密码不能为空!");
Z("#operatorPass").focus();
return;
}
var operatorNewPass = Z("#operatorNewPass").val();
if (operatorPass != operatorNewPass)
{
Z.failure("两次确认密码不一样!");
return;
}
if(!Z.D.id("reg_agree").checked)
{
Z.failure("未阅读注册协议");
return;
}
var ajax = new Z.Ajax();
ajax.setClassName("ZmrLoginPresenter");
ajax.setMethodName("insertReg");
ajax.addParam("operatorCode", operatorCode);
ajax.addParam("operatorMobile", operatorMobile);
ajax.addParam("operatorPass", operatorPass);
ajax.addParam("operatorNewPass", operatorNewPass);
ajax.addParam("smsCode", smsCode);
ajax.setFailureAlert();
ajax.setSuccess(function(responseText){
Z.success(responseText,function(){window.location.href= window.location.href= "/";});
});
ajax.setLoading("modifyBtn", '正在提交', {disabled:true});
ajax.execute();
}
//发送验证码
function doSendSmsCode(){
var operatorCode = Z("#operatorCode").val();
if (Z.V.isEmptyBlank(operatorCode))
{
Z.failure("用户昵称不能为空!");
Z("#operatorCode").focus();
return;
}
var operatorMobile = Z("#operatorMobile").val();
if (Z.V.isEmptyBlank(operatorMobile))
{
Z.failure("手机号不能为空!");
Z("#operatorMobile").focus();
return;
}
if (Z('#getsms-submit')[0].innerHTML != "获取验证码" && Z('#getsms-submit')[0].innerHTML != "重新发送") {
Z.failure("请稍后再试");
return ;
}
var ajax = new Z.Ajax();
ajax.setContextPath("${context.getContextPath()}");
ajax.setClassName("ZmrLoginPresenter");
ajax.setMethodName("sendSmsReg");
ajax.addParam("operatorCode", operatorCode);
ajax.addParam("operatorMobile", operatorMobile);
ajax.setFailureAlert();
ajax.setSuccess();
ajax.execute();
setYzmLabel();
}
var wait = 60;
function setYzmLabel() {
if (wait == 0)
{
Z('#getsms-submit')[0].innerHTML = "重新发送";
wait = 60;
}
else
{
Z('#getsms-submit')[0].innerHTML = "已发送(" + wait + ")";
wait--;
setTimeout(function () {
setYzmLabel()
}, 1000);
}
};
</script>
<div class="reg-box">
<div class="header">欢迎注册 [ ${context.getContextName()} ]</div>
<div class="reg-login">
<div class="design-logo"><img src="ztmpl/zhiqim_manager/designLogo.png"></div>
<div class="reg">
<div class="reg-title">已有账号?<a href="/">马上登录</a></div>
<div class="reg-h">设计师注册</div>
<div class="reg-list">
<span>用户昵称:</span>
<input placeholder="请输入登录用户名" id="operatorCode" name="operatorCode" maxlength="8" autocomplete="off" />
</div>
<div class="reg-list">
<span>手机号码:</span>
<input type="tel" id="operatorMobile" name="operatorMobile" data-options="type:Integer;" placeholder="请输入手机号码" maxlength="11" autocomplete="off" />
</div>
<div class="reg-list">
<span>验证码:</span>
<input id="smsCode" name="smsCode" class="input-code" placeholder="请输入验证码" maxlength="6" data-options="type:Integer;" autocomplete="off" />
<button id="getsms-submit" onclick="doSendSmsCode()">获取验证码</button>
</div>
<div class="reg-list">
<span>登录密码:</span>
<input type="password" name="operatorPass" id="operatorPass" placeholder="请输入登录密码" maxlength="16" autocomplete="new-password" />
</div>
<div class="reg-list">
<span>确认密码:</span>
<input type="password" name="operatorNewPass" id="operatorNewPass" placeholder="请输入登录密码" maxlength="16" autocomplete="new-password" />
</div>
<div class="reg-list">
<span>推荐码:</span>
<input placeholder="请输入推荐码(无则不填)" maxlength="16" autocomplete="off" />
</div>
<div class="reg-check">
<input id="reg_agree" style='width:30px;' type="checkbox" data-role="z-checkbox" data-class="z-mg-r10 " />
<span>我已阅读<a onclick="agreeShow()">《设计师注册协议》</a></span>
</div>
<button id="modifyBtn" class="reg-btn" onclick="insertReg()">注册</button>
</div>
</div>
<div class="footer">Copyright © 2023 领淘众创 All Rights Reserved <a href="https://beian.miit.gov.cn/" style="color: white" target="_blank">备案号:闽ICP备2023014112号-1 </a></div>
</div>
<div class="agree-popup">
<div class="agree-title">设计师注册协议<span onclick="agreeShow()">x</span></div>
<div class="agree-content">
<h2>一、总则</h2>
<p>1.1 秒绘设计平台网站的所有权和运营权归湖南秒绘科技有限公司所有。</p>
<p>1.2 用户在注册之前,应当仔细阅读本协议,并同意遵守本协议后方可成为注册用户。一旦注册成功,则用户与秒绘设计平台网站两者之间自动形成协议关系,用户应当受本协议的约束。用户在使用特殊的服务或产品时,应当同意接受相关协议后方能使用。</p>
<p>1.3 本协议则可由秒绘设计平台网站随时更新,用户应当及时关注并同意本站不承担通知义务。本站的通知、公告、声明或其它类似内容是本协议的一部分。</p>
<h2>二、服务内容</h2>
<p>2.1 秒绘设计平台网站的具体内容由本站根据实际情况提供。</p>
<p>2.2 本站仅提供相关的技术服务。</p>
<h2>三、用户帐号</h2>
<p>3.1 经本站注册系统完成注册程序并通过身份认证的用户即成为正式用户,可以获得本站规定用户所应享有的一切权限;秒绘设计平台网站有权对用户的权限设计进行变更。</p>
<p>3.2 用户只能按照注册要求注册。用户有义务保证密码和帐号的安全,用户利用该密码和帐号所进行的一切活动引起的任何损失或损害,由用户自行承担全部责任,本站不承担任何责任。如用户发现帐号遭到未授权的使用或发生其他任何安全问题,应立即修改帐号密码并妥善保管,如有必要,请通知本站。因黑客行为或用户的保管疏忽导致帐号非法使用,本站不承担任何责任。</p>
<h2>四、使用规则</h2>
<p>4.1 4.1 遵守中华人民共和国相关法律法规,包括但不限于《中华人民共和国计算机信息系统安全保护条例》、《计算机软件保护条例》、《最高人民法院关于审理涉及计算机网络著作权纠纷案件适用法律若干问题的解释(法释[2004]1号)》、《全国人大常委会关于维护互联网安全的决定》、《互联网电子公告服务管理规定》、《互联网新闻信息服务管理规定》、《互联网著作权行政保护办法》和《信息网络传播权保护条例》等有关计算机互联网规定和知识产权的法律和法规、实施办法。</p>
<p>4.2 用户对其自行发表、上传或传送的内容负全部责任,所有用户不得在本站任何页面发布、转载、传送含有下列内容之一的信息,否则本站有权自行处理并不通知用户: (1)违反宪法确定的基本原则的; (2)危害国家安全,泄漏国家机密,颠覆国家政权,破坏国家统一的; (3)损害国家荣誉和利益的; (4)煽动民族仇恨、民族歧视,破坏民族团结的; (5)破坏国家宗教政策,宣扬邪教和封建迷信的; (6)散布谣言,扰乱社会秩序,破坏社会稳定的; (7)散布淫秽、色情、赌博、暴力、恐怖或者教唆犯罪的; (8)侮辱或者诽谤他人,侵害他人合法权益的; (9)煽动非法集会、结社、游行、示威、聚众扰乱社会秩序的; (10)以非法民间组织名义活动的; (11)含有法律、行政法规禁止的其他内容的。</p>
<p>4.3用户承诺对其发表或者上传于本站的所有信息(即属于《中华人民共和国著作权法》规定的作品,包括但不限于文字、图片、音乐、电影、表演和录音录像制品和电脑程序等)均享有完整的知识产权,或者已经得到相关权利人的合法授权;如用户违反本条规定造成本站被第三人索赔的,用户应全额补偿本站一切费用(包括但不限于各种赔偿费、诉讼代理费及为此支出的其它合理费用);</p>
<p>4.4当第三方认为用户发表或者上传于本站的信息侵犯其权利,并根据《信息网络传播权保护条例》或者相关法律规定向本站发送权利通知书时,用户同意本站可以自行判断决定删除涉嫌侵权信息,除非用户提交书面证据材料排除侵权的可能性,本站将不会自动恢复上述删除的信息; (1)不得为任何非法目的而使用网络服务系统; (2)遵守所有与网络服务有关的网络协议、规定和程序; (3)不得利用本站进行任何可能对互联网的正常运转造成不利影响的行为; (4)不得利用本站进行任何不利于本站的行为。</p>
<p>4.5如用户在使用本站时违反上述任何规定,本站有权要求用户改正或直接采取一切必要的措施(包括但不限于删除用户张贴的内容、暂停或终止用户使用本站的权利)以减轻用户不当行为而造成的影响。</p>
<h2>五、隐私保护</h2>
<p>5.1 本站不对外公开或向第三方提供单个用户的注册资料及用户在使用网络服务时存储在本站的非公开内容,但下列情况除外: (1)事先获得用户的明确授权; (2)根据有关的法律法规要求; (3)按照相关政府主管部门的要求; (4)为维护社会公众的利益。</p>
<p>5.2 本站可能会与第三方合作向用户提供相关的网络服务,在此情况下,如该第三方同意承担与本站同等的保护用户隐私的责任,则本站有权将用户的注册资料等提供给该第三方。</p>
<p>5.3 在不透露单个用户隐私资料的前提下,本站有权对整个用户数据库进行分析并对用户数据库进行商业上的利用。</p>
<h2>六、版权声明</h2>
<p>6.1 本站的文字、图片、音频、视频等版权均归湖南秒绘科技有限公司享有或与作者共同享有,未经本站许可,不得任意转载。</p>
<p>6.2 本站特有的标识、版面设计、编排方式等版权均属湖南秒绘科技有限公司享有,未经本站许可,不得任意复制或转载。 </p>
<p>6.3 使用本站的任何内容均应注明“来源于秒绘设计平台网站”及署上作者姓名,按法律规定需要支付稿酬的,应当通知本站及作者及支付稿酬,并独立承担一切法律责任。</p>
<p>6.4 本站享有所有作品用于其它用途的优先权,包括但不限于网站、电子杂志、平面出版等,但在使用前会通知作者,并按同行业的标准支付稿酬。</p>
<p>6.5 本站所有内容仅代表作者自己的立场和观点,与本站无关,由作者本人承担一切法律责任。 </p>
<p>6.6 恶意转载本站内容的,本站保留将其诉诸法律的权利。</p>
<h2>七、责任声明</h2>
<p>7.1 用户明确同意其使用本站所存在的风险及一切后果将完全由用户本人承担,秒绘设计平台网站对此不承担任何责任。 </p>
<p>7.2 本站无法保证服务一定能满足用户的要求,也不保证服务的及时性、安全性、准确性。 </p>
<p>7.3 本站不保证为方便用户而设置的外部链接的准确性和完整性,同时,对于该等外部链接指向的不由本站实际控制的任何网页上的内容,本站不承担任何责任。</p>
<p>7.4 对于因不可抗力或本站不能控制的原因造成的服务中断或其它缺陷,本站不承担任何责任,但将尽力减少因此而给用户造成的损失和影响。</p>
<p>7.5 对于本站向用户提供的下列产品或者服务的质量缺陷本身及其引发的任何损失,本站无需承担任何责任: (1)本站向用户免费提供的各项服务; (2)本站向用户赠送的任何产品或者服务。</p>
<p>7.6 本站有权于任何时间暂时或永久修改或终止本服务(或其任何部分),而无论其通知与否,本站对用户和任何第三人均无需承担任何责任。</p>
<h2>八、附则</h2>
<p>8.1 本协议的订立、执行和解释及争议的解决均应适用中华人民共和国法律。 </p>
<p>8.2 如本协议中的任何条款无论因何种原因完全或部分无效或不具有执行力,本协议的其余条款仍应有效并且有约束力。</p>
<p>8.3 本协议解释权及修订权归湖南秒绘科技有限公司所有。</p>
</div>
</div>
<script>
function agreeShow(){
$('.agree-popup').toggle()
}
</script>
@@ -0,0 +1,129 @@
${Styles.src(zhiqim.css)}
${Scripts.src(zhiqim.js)}
<link rel="stylesheet" type="text/css" href="zinc/css/base.css">
<script src="zinc/js/jquery-1.11.1.min.js"></script>
<script>
//重置密码
function resetPass()
{
var operatorMobile = Z("#operatorMobile").val();
if (Z.V.isEmptyBlank(operatorMobile))
{
Z.failure("手机号不能为空!");
Z("#operatorMobile").focus();
return;
}
var smsCode = Z("#smsCode").val();
if (Z.V.isEmptyBlank(smsCode))
{
Z.failure("验证码不能为空!");
return;
}
var operatorPass = Z("#operatorPass").val();
if (Z.V.isEmptyBlank(operatorPass))
{
Z.failure("密码不能为空!");
Z("#operatorPass").focus();
return;
}
var operatorNewPass = Z("#operatorNewPass").val();
if (operatorPass != operatorNewPass)
{
Z.failure("两次确认密码不一样!");
return;
}
var ajax = new Z.Ajax();
ajax.setClassName("ZmrLoginPresenter");
ajax.setMethodName("resetPassword");
ajax.addParam("operatorMobile", operatorMobile);
ajax.addParam("operatorPass", operatorPass);
ajax.addParam("operatorNewPass", operatorNewPass);
ajax.addParam("smsCode", smsCode);
ajax.setFailureAlert();
ajax.setSuccess(function(responseText){
Z.success(responseText,function(){window.location.href= window.location.href= "/";});
});
ajax.setLoading("modifyBtn", '正在提交', {disabled:true});
ajax.execute();
}
//发送验证码
function doSendSmsCode(){
var operatorMobile = Z("#operatorMobile").val();
if (Z.V.isEmptyBlank(operatorMobile))
{
Z.failure("手机号不能为空!");
Z("#operatorMobile").focus();
return;
}
if (Z('#getsms-submit')[0].innerHTML != "获取验证码" && Z('#getsms-submit')[0].innerHTML != "重新发送") {
Z.failure("请稍后再试");
return ;
}
var ajax = new Z.Ajax();
ajax.setContextPath("${context.getContextPath()}");
ajax.setClassName("ZmrLoginPresenter");
ajax.setMethodName("sendSmsRestPass");
ajax.addParam("operatorMobile", operatorMobile);
ajax.setFailureAlert();
ajax.setSuccess();
ajax.execute();
setYzmLabel();
}
var wait = 60;
function setYzmLabel() {
if (wait == 0)
{
Z('#getsms-submit')[0].innerHTML = "重新发送";
wait = 60;
}
else
{
Z('#getsms-submit')[0].innerHTML = "已发送(" + wait + ")";
wait--;
setTimeout(function () {
setYzmLabel()
}, 1000);
}
};
</script>
<div class="reg-box">
<div class="header">欢迎注册 [ ${context.getContextName()} ]</div>
<div class="reg-login p-login">
<div class="design-logo p-int"><img src="ztmpl/zhiqim_manager/designLogo.png"></div>
<div class="reg">
<div class="reg-title">已有账号?<a href="/">马上登录</a></div>
<div class="reg-h">重置密码</div>
<div class="reg-list">
<span>手机号码:</span>
<input type="tel" id="operatorMobile" name="operatorMobile" data-options="type:Integer;" placeholder="请输入手机号码" maxlength="11" autocomplete="off" />
</div>
<div class="reg-list">
<span>验证码:</span>
<input id="smsCode" name="smsCode" class="input-code" data-options="type:Integer;" placeholder="请输入验证码" maxlength="6" autocomplete="off" />
<button id="getsms-submit" onclick="doSendSmsCode()">获取验证码</button>
</div>
<div class="reg-list">
<span>新密码:</span>
<input type="password" name="operatorPass" id="operatorPass" placeholder="请输入登录密码" maxlength="16" autocomplete="off" />
</div>
<div class="reg-list">
<span>确认密码:</span>
<input type="password" name="operatorNewPass" id="operatorNewPass" placeholder="请再次输入登录密码" maxlength="16" autocomplete="off" />
</div>
<button id="modifyBtn" class="reg-btn p-btn" onclick="resetPass()">确认</button>
</div>
</div>
<div class="footer">Copyright © 2023 领淘众创 All Rights Reserved <a href="https://beian.miit.gov.cn/" style="color: white" target="_blank">备案号:闽ICP备2023014112号-1 </a></div>
</div>