no commit message

This commit is contained in:
雨中磐石
2024-10-18 15:27:40 +08:00
parent 9a2a3a2c8a
commit 559c388ea0
103 changed files with 2021 additions and 783 deletions

View File

@@ -941,41 +941,56 @@ class inputAction extends Action
$fields = substr($fields, 1);
if($fieldss!='')$fieldss = substr($fieldss,1);
$data = c('html')->importdata($fields, $fieldss); //获取提交过来要导入的数据库
if(!$data)return returnerror('没有可导入的数据,注意*是必填的哦');
$msgstr = '';
$hobj = c('html');
$data = $hobj->importdata($fields, $fieldss,'', 1); //获取提交过来要导入的数据库
$errdata= $hobj->importerrda();
if(!$data)return returnerror('没有可导入的数据,注意*是必填的哦',201, array('errdata'=>$errdata));
//保存前判断
if(method_exists($flow,'flowdaorubefore')){
$data = $flow->flowdaorubefore($data);
if(is_string($data))return returnerror($data);
$data = $flow->flowdaorubefore($data, $errdata);
if(is_string($data))return returnerror($data, 201, array('errdata'=>$errdata));
}
//判断是否有重复
$ldata = array();
foreach($data as $k=>$rs){
$bos = true;
foreach($onlyfield as $onid){
$val = arrvalue($rs, $onid);
if(!isempt($val)){
$tos = $flow->rows("`$onid`='$val'");
if($tos>0){
$bos = false;
$msgstr.='行'.($k+1).'的字段'.$onid.'存在重复;';
break;
if($onlyfield){
foreach($data as $k=>$rs){
$bos = true;
foreach($onlyfield as $onid){
$val = arrvalue($rs, $onid);
if(!isempt($val)){
$tos = $flow->rows("`$onid`='$val'");
if($tos>0){
$bos = false;
$errdata[$rs['drxu']] = '字段('.$onid.':'.$val.')存在重复';
break;
}
}
}
if($bos)$ldata[] = $rs;
}
if($bos)$ldata[] = $rs;
}else{
$ldata = $data;
}
if(!$ldata)return returnerror('没有可导入的数据'.$msgstr.'');
if(!$ldata)return returnerror('没有可导入的数据',201, array('errdata'=>$errdata));
$allfields = $this->db->getallfields('[Q]'.$flow->mtable.'');
$oi = 0;
$dorudat= array();
foreach($ldata as $k=>$rs){
$drerr = '';
if(isset($rs['drerr'])){
$drerr = $rs['drerr'];
if($drerr){
$errdata[$rs['drxu']] = $drerr;
continue;
}
}
unset($rs['drxu']);
unset($rs['drerr']);
$id = (int)arrvalue($rs,'id','0');
$where = '';
if($id>0){
@@ -1019,20 +1034,22 @@ class inputAction extends Action
$na = ($isturn=='1') ? '提交' : '保存';
$flow->submit($na);
}
$errdata[$drxu] = 'ok';
}else{
$msgstr.='行'.($k+1).'保存数据库错误;';
$errdata[$drxu] = '数据库错误:'.$this->db->error().'';
}
}
if($oi==0)return returnerror('导入数据为0条'.$msgstr.'');
if($oi==0)return returnerror('导入数据为0条', 201, array('errdata'=>$errdata));
//保存后判断
if(method_exists($flow,'flowdaoruafter')){
$flow->flowdaoruafter($dorudat);
}
return returnsuccess('成功导入'.$oi.'条数据'.$msgstr.'');
$bcarr = returnsuccess('成功导入'.$oi.'条数据');
$bcarr['errdata'] = $errdata;
return $bcarr;
}
//读取导入的excel数据

View File

@@ -471,7 +471,7 @@ var inputtwo={
if(!da || da.length==0)return;
var o2 = $(o1),lefta=o2.offset(),i,len=da.length,ds=[],zl=10,j=0;
$('#completelist').remove();
var str= '<div id="completelist" style="position:absolute;z-index:9;left:'+lefta.left+'px;top:'+(lefta.top+29)+'px;background:white;border:1px var(--main-color) solid;box-shadow: 0px 0px 5px rgb(0,0,0,0.3)"></div>';
var str= '<div id="completelist" style="position:absolute;z-index:9;left:'+lefta.left+'px;top:'+(lefta.top+29)+'px;background:white;border:1px var(--main-color) solid;border-radius:5px;box-shadow: 0px 0px 5px rgb(0,0,0,0.3)"></div>';
var val= strreplace(o1.value);
if(val){
for(i=0;i<len;i++)if(da[i].name.indexOf(val)>-1 || (da[i].subname && da[i].subname.indexOf(val)>-1)){
@@ -497,7 +497,7 @@ var inputtwo={
if(j>=zl)break;
}
if(len>zl){
str+='<div style="padding:5px 10px;background:#eeeeee">总记录'+len+'条';
str+='<div style="padding:5px 10px;background:rgba(0,0,0,0.1)">总记录'+len+'条';
if(p>1)str+='&nbsp;<a href="javascript:;" class="zhu" onclick="c.autocompleteshows(\''+zl+'\','+(p-1)+')">&lt;上页</a>';
if(j==zl)str+='&nbsp;<a href="javascript:;" class="zhu" onclick="c.autocompleteshows(\''+zl+'\','+(p+1)+')">下页&gt;</a>';
str+='</div>';

View File

@@ -0,0 +1,75 @@
//流程模块【custprice.报价单】下录入页面自定义js页面,初始函数
function initbodys(){
//记录原来选择的
c.daossdts=[];
c.onselectdatabefore=function(){
this.daossdts = this.getsubdata(0);
}
//这个是很复杂的叠加关系,时间久了谁也不知道是干嘛用的
c.onselectdataall=function(fid,seld,sna,sid){
if(!seld || !sna)return;
var da = [];
if(!seld[0]){
da[0]=seld;
}else{
da = seld;
}
var nam = this.getxuandoi(fid),snua;
var dao=this.daossdts,i,j,bo,d,oi=parseFloat(nam[1]),oii=-1;
for(i=0;i<da.length;i++){
d = da[i];
bo = false;
for(j=0;j<dao.length;j++)if(dao[j].aid==d.value)bo=true;
oii++;
if(!bo){
if(oii>0){
snua= ''+nam[3]+''+nam[0]+'_'+(oi+oii)+'';
if(!form(snua) || form(snua).value!=''){
nam = this.insertrow(0,{},true);
}else{
nam[1]=parseFloat(nam[1])+1;
}
}
this.setrowdata(nam[0],nam[1],{
unit:d.unit,
price:d.price,
temp_aid:d.name,
aid:d.value
});
}else{
oii--;
if(i==0){
this.setrowdata(nam[0],nam[1],{
unit:'',
price:'0',
temp_aid:'',
aid:'0'
});
}
}
}
}
}
function changesubmit(){
if(get('tablesub0')){
var da = c.getsubdata(0),d1;
for(var i=0;i<da.length;i++){
d1 = da[i];
if(!d1.aid)return '行['+(i+1)+']必须选择物品';
if(d1.count<=0)return '行['+(i+1)+']数量必须大于0';
}
}
}
function eventaddsubrows(xu,oj){
c.setrowdata(xu,oj,{
aid:'0'
});
}

View File

@@ -13,4 +13,8 @@ function changesubmit(d){
if(!d.rankings)len2=0;
if(len2!=len1)return '多部门和多职位的数量不一致';
}
js.setoption('userjson','');
js.setoption('deptjson','');
js.setoption('groupjson','');
}

View File

@@ -43,6 +43,7 @@ class mode_collectsClassAction extends inputAction{
return $arr;
}
private $zdarr,$zdobj;
public function collectstotal_before()
{
$mid = (int)$this->get('mid','0');

View File

@@ -0,0 +1,48 @@
<?php
/**
* 此文件是流程模块【custxiao.销售】对应控制器接口文件。
*/
class mode_custpriceClassAction extends inputAction{
private $sssaid;
protected function savebefore($table, $arr, $id, $addbo){
$data = $this->getsubtabledata(0);
if(count($data)==0)return '至少要有一行记录';
$this->sssaid = '0';
foreach($data as $k=>$rs){
$this->sssaid.=','.$rs['aid'].'';
if(isset($rs['aid']))foreach($data as $k1=>$rs1){
if($k!=$k1){
if($rs['aid']==$rs1['aid'])
return '行'.($k1+1).'的物品已在行'.($k+1).'上填写,不要重复填写';
}
}
}
$rows['type'] = '6';//一定要是6不能去掉
return array(
'rows'=>$rows
);
}
protected function saveafter($table, $arr, $id, $addbo){
}
//读取物品
public function getgoodsdata()
{
return m('goods')->getgoodsdata(2);
}
//读取我的客户
public function getmycust()
{
$rows = m('crm')->getmycust($this->adminid, $this->rock->arrvalue($this->rs, 'custid'));
return $rows;
}
}

View File

@@ -1,7 +1,7 @@
<?php
class mode_dailyClassAction extends inputAction{
public $months;
public $months,$ztdt;
protected function savebefore($table, $arr, $id, $addbo){
$type = arrvalue($arr, 'type');

View File

@@ -4,6 +4,7 @@
*/
class mode_userClassAction extends inputAction{
private $depta;
protected function savebefore($table, $cans, $id, $addbo){
if(getconfig('systype')=='demo' && $id>0)return '演示请勿编辑';
@@ -89,7 +90,12 @@ class mode_userClassAction extends inputAction{
//组数据源
public function groupdata()
{
return m('sjoin')->getgrouparrs();
$data = m('sjoin')->getgrouparrs();
if(!$data)$data[] = array(
'value'=> '0',
'name' => '无组选择'
);
return $data;
}
//生成列表页,数据读取后处理

View File

@@ -5,18 +5,19 @@ $(document).ready(function(){
var modenum = params.modenum;
var c={
headers:'',
yscss:'style="border:var(--border);padding:3px 5px"',
yulan:function(){
var cont = mobjs.val(),s='',a,a1,i,j,oi=0;
s+='<table class="basetable" border="1">';
s+='<tr><td></td>'+this.headers+'</tr>';
s+='<table border="0">';
s+='<tr style="background:rgba(0,0,0,0.1)"><td '+this.yscss+'></td><td '+this.yscss+'>导入结果</td>'+this.headers+'</tr>';
a = cont.split('\n');
for(i=0;i<a.length;i++){
if(a[i]){
oi++;
a1 = a[i].split(' ');
s+='<tr>';
s+='<td>'+oi+'</td>';
for(j=0;j<a1.length;j++)s+='<td>'+a1[j]+'</td>';
s+='<td '+this.yscss+'>'+oi+'</td><td '+this.yscss+' id="runstate_'+modenum+'_'+oi+'"></td>';
for(j=0;j<a1.length;j++)s+='<td '+this.yscss+'>'+a1[j]+'</td>';
s+='</tr>';
}
}
@@ -37,12 +38,12 @@ $(document).ready(function(){
var i,len=ret.length,d;
for(i=0;i<len;i++){
d=ret[i];
this.headers+='<td>';
this.headers+='<td '+this.yscss+'>';
if(d.isbt=='1'){
this.bitian+=','+d.fields+'';
this.headers+='<font color=red>*</font>';
}
this.headers+=''+d.name+'</td>';
this.headers+=''+d.name+'('+d.fields+')</td>';
}
this.yulan();
},
@@ -68,11 +69,20 @@ $(document).ready(function(){
js.setmsg(ds.msg+'','red', vis);
o1.disabled=false;
}
if(ds.errdata)c.showerrdata(ds.errdata);
},'post,json',function(s){
js.setmsg(s,'red', vis);
o1.disabled=false;
});
},
showerrdata:function(ed){
var xu,str,col;
for(xu in ed){
str = ed[xu];
col = (str=='ok') ? 'green' : 'red';
$('#runstate_'+modenum+'_'+(parseFloat(xu)+1)+'').html('<font color='+col+'>'+str+'</font>');
}
},
downxz:function(){
var url = '?m=input&a=daoruexcel&d=flow&modenum='+modenum+'';
js.open(url);

View File

@@ -3,63 +3,56 @@
<head>
<meta charset="utf-8">
<title><?=$da['title']?></title>
<link rel="stylesheet" href="<?=$da['p']?>/css/css.css" />
<link rel="stylesheet" href="<?=$da['p']?>/css/rock.css" />
<link rel="stylesheet" type="text/css" href="mode/plugin/css/jquery-rockdatepicker.css"/>
<link rel="shortcut icon" href="favicon.ico" />
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/js.js"></script>
<script type="text/javascript" src="js/js.js?<?=$nowtime?>"></script>
<script type="text/javascript" src="js/base64-min.js"></script>
<script type="text/javascript" src="mode/plugin/jquery-rockdatepicker.js"></script>
<script type="text/javascript" src="<?=$da['p']?>/flow/input/inputjs/input.js?<?=$da['logintime']?>"></script>
<script type="text/javascript" src="web/res/js/jquery-changeuser.js"></script>
<script type="text/javascript" src="mode/plugin/jquery-rockmodels.js"></script>
<script type="text/javascript" src="<?=$da['p']?>/flow/input/inputjs/input.js?<?=$nowtime?>"></script>
<script type="text/javascript" src="web/res/js/jquery-changeuser.js?<?=$nowtime?>"></script>
<script type="text/javascript" src="mode/plugin/jquery-rockmodels.js?<?=$nowtime?>"></script>
<script type="text/javascript">
<?php
$maincolor = getconfig('apptheme','#1389D3');
?>
var editor,arr=<?=$da['fieldsjson']?>,moders=<?=json_encode($da['moders'])?>,gongsiarr=<?=json_encode($da['gongsiarr'])?>,subfielsa=<?=json_encode($da['subfielsa'])?>,zbnamearr=<?=json_encode($da['zbnamearr'])?>,isedit=0,mid='<?=$da['mid']?>',isinput=1,data={},maincolor='<?=$maincolor?>',tempdata='<?=$tempdata?>';
var editor,arr=<?=$da['fieldsjson']?>,moders=<?=json_encode($da['moders'])?>,gongsiarr=<?=json_encode($da['gongsiarr'])?>,subfielsa=<?=json_encode($da['subfielsa'])?>,zbnamearr=<?=json_encode($da['zbnamearr'])?>,isedit=0,mid='<?=$da['mid']?>',isinput=1,data={},tempdata='<?=$tempdata?>';
</script>
<?php
echo c('color')->getApptheme();
?>
<style>
<?php
$maincolora= c('image')->colorTorgb($maincolor);
$maincolors= ''.$maincolora[0].','.$maincolora[1].','.$maincolora[2].'';
echo 'body{--main-color:'.$maincolor.';--main-border:rgba('.$maincolors.',0.2)}';
$colarr = c('color')->getColor();
$maincolors= $colarr['colors'];
?>
.tdcont{padding:0px 0px;font-size:14px;}
.tdcont *{font-size:14px;}
.tdcont a{color:blue;}
.ys0{border:1px #888888 solid;border:1px var(--main-border) solid}
.ys1{padding:5px 5px;border:1px #888888 solid; border:1px var(--main-border) solid;color:#555555;}
.ys2{padding:5px 5px;border:1px #888888 solid;border:1px var(--main-border) solid;}
.ys1{padding:5px 5px;color:#666666}
.ys2{padding:5px 5px;}
.inputs{width:95%;font-size:14px;}
.inputs,.textarea{flex:1;width:95%;margin:3px 0px}
.cionsss{padding:4px; background-color:#dddddd}
.datesss{background:url(mode/icons/date.png) no-repeat right;cursor:pointer}
.status{position: absolute;right:5px;top:10px;display:none;width:80px;height:80px;overflow:hidden; border:3px red solid;border-radius:50%;font-size:20px;text-align:center;line-height:80px;color:red;transform:rotate(-45deg);-o-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-webkit-transform:rotate(-45deg);filter:progid:DXImagetransform.Microsoft.Matrix(M11=0.707,M12=-0.707,M21=0.707,M22=0.707,SizingMethod='auto expand');}
.tablesub td{height:25px;text-align:center;border-bottom:1px var(--main-border) solid;border-right:1px var(--main-border) solid;}
.tablesub .inputs{border:none}
.tablesub td{height:25px;text-align:center;border:var(--border);}
.tablesub .inputs,.tablesub .textarea{border:none;background:none;border-radius:0;margin:0;width:100%;padding:0;}
.tablesub .inputs[readonly]{background-color:rgba(0,0,0,0.1);}
.course{padding:8px; background-color:rgba(<?=$maincolors?>,0.2);border:1px rgba(<?=$maincolors?>,0.3) solid;margin-right:10px;text-align:center;border-radius:5px}
.coursejt{height:8px;overflow:hidden;width:30px;background-color:rgba(<?=$maincolors?>,0.2)}
.coursejts{width:0px; height:0px; overflow:hidden;border-width:8px;border-style:solid;border-color:transparent transparent transparent rgba(<?=$maincolors?>,0.2);}
.tishi{color:#888888;font-size:12px;padding:3px}
.btn-default{background-color:#1389D3;}
.btn-danger{background-color:#d9534f;}
.btn:hover{opacity:1;color:#ffffff}
.ke-icon-crop{background-image: url(mode/icons/crop.png);width: 16px;height: 16px;}
.xuhao{text-align:center;}
.xuhao[readonly]{background:none}
</style>
</head>
<body style="background:white">
<body>
<div align="center">
<div class="blank10"></div>
<div style="min-width:650px; position:relative;max-width:<?=$da['inputwidth']?>px;margin:0px 10px">
<div style="min-width:650px; position:relative;max-width:<?=$da['inputwidth']?>px;margin:0px 10px;">
<div onclick="$(this).remove()" class="status"></div>
<div style="padding-bottom:15px;"><span id="inputtitle" onclick="location.reload()" style="font-size:24px"><?=$da['title']?></span></div>
<div class="tdcont" align="left">
<div class="tdcont border" style="background:var(--main-bgcolor);padding:10px;border-radius:5px" align="left">
<form name="myform" autocomplete="off">
<input name="id" type="hidden" value="<?=$da['mid']?>">
<input name="sxuanfileid" type="hidden" value="">
@@ -127,15 +120,15 @@ echo 'body{--main-color:'.$maincolor.';--main-border:rgba('.$maincolors.',0.2)}'
</form>
</div>
<?php echo $coursestr;?>
<div style="height:60px; overflow:hidden"></div>
</div>
<div align="right" style="background:#eeeeee;border-top:1px #aaaaaa solid;padding:10px 0px; position:fixed;width:100%;bottom:0px;left:0px;z-index:10">
<div style="height:70px; overflow:hidden"></div>
<div align="right" style="background:var(--main-bgcolor);border-top:var(--border);padding:10px 0px; position:fixed;width:100%;bottom:0px;left:0px;z-index:10">
<span id="msgview"></span>&nbsp;
<span id="AltSspan" style="display:none" >
<?php
if($da['isflow']>0)echo '<label><input onclick="c.changeturn(this)" value="1" checked type="checkbox" id="sysisturn">直接提交</label>&nbsp;';
?>
<a class="hui" id="Altzhan" style="margin-right:10px;display:none" onclick="return c.savezhan()" href="javascript:;">暂存</a><input id="AltS" type="button" style="border-radius:5px" onclick="return c.save()" value="提交" class="webbtn"></span>&nbsp; &nbsp;
<a class="hui" id="Altzhan" style="margin-right:10px;display:none" onclick="return c.savezhan()" href="javascript:;">暂存</a><input id="AltS" type="button" onclick="return c.save()" value="提交" class="webbtn"></span>&nbsp; &nbsp;
</div>
</div>
<script>

View File

@@ -10,13 +10,13 @@
<link rel="stylesheet" type="text/css" href="<?=$da['p']?>/css/cssm.css">
<link rel="stylesheet" type="text/css" href="mode/plugin/css/jquery-rockdatepicker.css"/>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/js.js"></script>
<script type="text/javascript" src="js/js.js?<?=$nowtime?>"></script>
<script type="text/javascript" src="js/base64-min.js"></script>
<script type="text/javascript" src="mode/plugin/jquery-rockdatepicker.js"></script>
<script type="text/javascript" src="mode/plugin/jquery-rockdatepicker-mobile.js"></script>
<script type="text/javascript" src="web/res/js/jquery-rockupload.js"></script>
<script type="text/javascript" src="<?=$da['p']?>/flow/input/inputjs/input.js?<?=$da['logintime']?>"></script>
<script type="text/javascript" src="web/res/js/jquery-changeuser.js"></script>
<script type="text/javascript" src="<?=$da['p']?>/flow/input/inputjs/input.js?<?=$nowtime?>"></script>
<script type="text/javascript" src="web/res/js/jquery-changeuser.js?<?=$nowtime?>"></script>
<script type="text/javascript" src="web/res/js/jquery-imgview.js"></script>
<script type="text/javascript" src="mode/plugin/jquery-rockmodels.js"></script>
<script type="text/javascript">