费用报销单

master
SookDong 2024-04-25 17:45:56 +08:00
parent 9b434ea1eb
commit f6469ec1e7
14 changed files with 274 additions and 267 deletions

View File

@ -21,6 +21,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -75,6 +76,12 @@ public class FybxController extends BaseController {
Map<String, Object> mapModel = new HashMap<>(); Map<String, Object> mapModel = new HashMap<>();
try { try {
List<Map> list = this.fybxService.findAll(userMap); List<Map> list = this.fybxService.findAll(userMap);
list.forEach(it -> {
Object djrq = DateUtil.formatDate((Date) it.get("DJRQ"));
Object BXSJ = DateUtil.formatDateTime((Date) it.get("BXSJ"));
it.put("DJRQ", djrq);
it.put("BXSJ", BXSJ);
});
mapModel.put("data", getPageModel(list)); mapModel.put("data", getPageModel(list));
code = 0; code = 0;
} catch (Exception e) { } catch (Exception e) {

View File

@ -1,5 +1,6 @@
package net.htjs.pt4.zzsxt.service.impl.xxgl.xmkpgl.fybx; package net.htjs.pt4.zzsxt.service.impl.xxgl.xmkpgl.fybx;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
@ -51,7 +52,7 @@ public class FybxServiceImpl implements IFybxService {
userMap.put("FYID", map.get("FYID")); userMap.put("FYID", map.get("FYID"));
// 更新费用单据 // 更新费用单据
result = this.fybxMapper.updateZZSGL_JX_FYDJ(userMap); result = this.fybxMapper.updateZZSGL_JX_FYDJ(userMap);
}else{ } else {
userMap.put("FYID", Get16BM.getUnquieID()); userMap.put("FYID", Get16BM.getUnquieID());
userMap.put("BXSJ", DateUtil.date()); userMap.put("BXSJ", DateUtil.date());
// 保存费用单据 // 保存费用单据
@ -92,8 +93,10 @@ public class FybxServiceImpl implements IFybxService {
deleteMap.put("FYID", userMap.get("FYID")); deleteMap.put("FYID", userMap.get("FYID"));
this.fybxMapper.deleteZZSGL_JX_FYDJMX(deleteMap);//先删除数据中当前申请的所有明细信息, this.fybxMapper.deleteZZSGL_JX_FYDJMX(deleteMap);//先删除数据中当前申请的所有明细信息,
// 然后把界面上的显示的明细信息全部保存到表中。 // 然后把界面上的显示的明细信息全部保存到表中。
this.fybxMapper.insertZZSGL_JX_FYDJMX(fymxList); if (CollectionUtil.isNotEmpty(fymxList))
this.fybxMapper.insertZZSGL_JX_FYDJ_MX_FP(mxfplist); this.fybxMapper.insertZZSGL_JX_FYDJMX(fymxList);
if (CollectionUtil.isNotEmpty(mxfplist))
this.fybxMapper.insertZZSGL_JX_FYDJ_MX_FP(mxfplist);
} }
} }
@ -104,8 +107,25 @@ public class FybxServiceImpl implements IFybxService {
@Override @Override
public List<Map> selectZZSGL_JX_FYDJMX(Map userMap) throws SaveException { public List<Map> selectZZSGL_JX_FYDJMX(Map userMap) throws SaveException {
try { try {
return this.fybxMapper.selectZZSGL_JX_FYDJMX(userMap);
}catch (Exception e){ List<Map> fpList = this.selectZZSGL_JX_FYDJ_MX_FP(userMap);
Map<String, List<String>> fpMap = new HashMap<>();
for (Map map : fpList) {
String fymxid = MapUtil.getStr(map, "FYMXID");
List<String> list = fpMap.getOrDefault(fymxid, new ArrayList<>());
list.add(MapUtil.getStr(map, "FPID"));
fpMap.put(fymxid, list);
}
List<Map> fymxList = this.fybxMapper.selectZZSGL_JX_FYDJMX(userMap);
for (Map map : fymxList) {
String fymxid = MapUtil.getStr(map, "FYMXID");
List<String> fpidList = fpMap.get(fymxid);
map.put("FPID", StrUtil.join(",", fpidList));
}
return fymxList;
} catch (Exception e) {
log.error("查询开票申请明细信息出错", e); log.error("查询开票申请明细信息出错", e);
throw new SaveException(e); throw new SaveException(e);
} }

View File

@ -3,6 +3,7 @@ package net.htjs.pt4.zzsxt.service.impl.xxgl.xmkpgl.kpsq;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
@ -1506,6 +1507,10 @@ public class BoKpsqServiceImpl implements IBoKpsqService {
fpmxJsonObj.put("spdm",mxObj.getStr("SPBM"));//否 string 商品代码 fpmxJsonObj.put("spdm",mxObj.getStr("SPBM"));//否 string 商品代码
fpmxJsonObj.put("spsl",mxObj.getStr("SPSL").replaceAll(",",""));//是 number 商品数量 fpmxJsonObj.put("spsl",mxObj.getStr("SPSL").replaceAll(",",""));//是 number 商品数量
fpmxJsonObj.put("bhsdj",mxObj.getStr("SPDJ"));//否 string 不含税单价 fpmxJsonObj.put("bhsdj",mxObj.getStr("SPDJ"));//否 string 不含税单价
if (ObjectUtil.isNotEmpty(mxObj.get("SPSL"))&&mxObj.getBigDecimal("SPSL").compareTo(BigDecimal.ZERO) != 0) {
BigDecimal bhsdj = mxObj.getBigDecimal("JE", BigDecimal.ZERO).divide(mxObj.getBigDecimal("SPSL"), 13, BigDecimal.ROUND_HALF_UP);
fpmxJsonObj.put("bhsdj",bhsdj);//否 string 不含税单价
}
fpmxJsonObj.put("bhsje",StrUtil.isNotBlank(mxObj.getStr("JE"))?new BigDecimal(mxObj.getStr("JE").replaceAll(",","")):"0.00");//否 number 不含税金额 fpmxJsonObj.put("bhsje",StrUtil.isNotBlank(mxObj.getStr("JE"))?new BigDecimal(mxObj.getStr("JE").replaceAll(",","")):"0.00");//否 number 不含税金额
fpmxJsonObj.put("hsdj",mxObj.getStr("SPDJ"));//否 string 含税单价 fpmxJsonObj.put("hsdj",mxObj.getStr("SPDJ"));//否 string 含税单价
fpmxJsonObj.put("hsje",StrUtil.isNotBlank(mxObj.getStr("HSJE"))?new BigDecimal(mxObj.getStr("HSJE").replaceAll(",","")):"0.00");//否 number 含税金额 fpmxJsonObj.put("hsje",StrUtil.isNotBlank(mxObj.getStr("HSJE"))?new BigDecimal(mxObj.getStr("HSJE").replaceAll(",","")):"0.00");//否 number 含税金额

View File

@ -101,7 +101,7 @@
<select id="selectZZSGL_JX_FYDJ_MX_FP" resultType="map" parameterType="map"> <select id="selectZZSGL_JX_FYDJ_MX_FP" resultType="map" parameterType="map">
select select
fp.FPID, fp.FPDM, fp.FPHM, fp.KPRQ, fp.JSHJ fp.FPID, fp.FPDM, fp.FPHM, fp.KPRQ, fp.JSHJ, mx.FYMXID, mx.FYID
from ZZSGL_JX_FYDJ_MX_FP mx from ZZSGL_JX_FYDJ_MX_FP mx
inner join ZZSGL_JX_FPXX fp on mx.FPID = fp.FPID inner join ZZSGL_JX_FPXX fp on mx.FPID = fp.FPID
<where> <where>

View File

@ -245,6 +245,7 @@ var tablePublic = (function() {
tr_=$("#"+table_id+" tbody").find("tr:last"); tr_=$("#"+table_id+" tbody").find("tr:last");
} }
for(key in data[i]){ for(key in data[i]){
$(tr_).find("select[name='"+key+"']").val(data[i][key]);
$(tr_).find("input[name='"+key+"']").val(data[i][key]); $(tr_).find("input[name='"+key+"']").val(data[i][key]);
$(tr_).find("span[name='"+key+"']").text(data[i][key]); $(tr_).find("span[name='"+key+"']").text(data[i][key]);
$(tr_).find("div[name='"+key+"']").html(data[i][key]); $(tr_).find("div[name='"+key+"']").html(data[i][key]);

View File

@ -37,52 +37,25 @@ var kpsq_list = (function () {
}); });
}); });
var optionSqztStr = '<option value="' + kpsq_util.onGetSqztValue("全部") + '">--全部--</option>' + var djlxOptions = [];
'<option value="' + kpsq_util.onGetSqztValue("未发起") + '">未发起</option>' + djlxOptions.push('<option value="" >--全部--</option>');
'<option value="' + kpsq_util.onGetSqztValue("未审批") + '">未审批</option>' + FybxUtil.Enums.djlx.forEach(function(item,index,arr){
'<option value="' + kpsq_util.onGetSqztValue("审批通过") + '">审批通过</option>' + djlxOptions.push('<option value="' + item.value + '" >' + item.label + '</option>');
'<option value="' + kpsq_util.onGetSqztValue("审批中") + '">审批中</option>' + });
'<option value="' + kpsq_util.onGetSqztValue("审批不通过") + '">审批不通过</option>'; $("#DJLX").html(djlxOptions.join());
$("#DJLX").html(optionSqztStr);
var optionKpztStr = '<option value="' + kpsq_util.onGetKpztValue("全部") + '">--全部--</option>' + var bxztOptions = [];
'<option value="' + kpsq_util.onGetKpztValue("未报销") + '">未报销</option>' + bxztOptions.push('<option value="" >--全部--</option>');
'<option value="' + kpsq_util.onGetKpztValue("报销中") + '">报销中</option>' + FybxUtil.Enums.bxzt.forEach(function(item,index,arr){
'<option value="' + kpsq_util.onGetKpztValue("已报销") + '">已报销</option>'; bxztOptions.push('<option value="' + item.value + '" >' + item.label + '</option>');
$("#BXZT").html(optionKpztStr); });
$("#BXZT").html(bxztOptions.join());
//页面宽度计算 //页面宽度计算
$('.content-wrapper').css('width', $(window).width() - $('.sidebar').width() - 20 + 'px'); $('.content-wrapper').css('width', $(window).width() - $('.sidebar').width() - 20 + 'px');
$(window).resize(function () { $(window).resize(function () {
$('.content-wrapper').css('width', $(window).width() - $('.sidebar').width() - 20 + 'px'); $('.content-wrapper').css('width', $(window).width() - $('.sidebar').width() - 20 + 'px');
}) });
// 批量删除
$('#del').click(function () {
layui.use('table', function () {
var table = layui.table;
var selectData = table.checkStatus('table_sb').data;
if (selectData.length < 1) {
layui.use('layer', function () {
var layer = layui.layer;
layer.ready(function () {
top.layer.alert("请选择一条记录!", {icon: 0, closeBtn: 0});
})
});
return false;
}
curSeg.onDelete(selectData);
})
})
// 修改
$('#edit').click(function () {
layui.use('table', function () {
var table = layui.table;
var selectData = table.checkStatus('table_sb').data;
curSeg.onEdit(selectData);
})
})
// 添加 // 添加
$('#add').click(function () { $('#add').click(function () {
@ -97,86 +70,32 @@ var kpsq_list = (function () {
var colsObj = [ var colsObj = [
{type: 'checkbox'}, {type: 'checkbox'},
{field: 'DJBH', title: '单据编号', width: 160, align: 'left'}, {field: 'DJBH', title: '单据编号', width: 160, align: 'left'},
{ {field: 'DJRQ', title: '单据日期', width: 130, align: 'center'},
field: 'DJRQ', title: '单据日期', width: 130,
templet: function (d) {
var time = new Date(d.DJRQ);
var year = time.getFullYear();
var mon = time.getMonth() + 1;
if (mon < 10) {
mon = '0' + mon;
}
var day = time.getDay();
if (day < 10) {
day = '0' + day;
}
return '<div style="text-align: center;">' + year + '-' + mon + '-' + day + '</div>';
}
},
{ {
field: 'DJLX', title: '单据类型', width: 140, align: 'center', field: 'DJLX', title: '单据类型', width: 140, align: 'center',
templet: function (d) { templet: function (d) {
var kpzt = { return FybxUtil.getDjlx_label(d.DJLX);
"0": "已开具",
"1": "未开具",
"2": "部分已开具",
"3": "待红冲",
"4": "已作废",
"5": "已推送",
"6": "推送失败"
};
return kpzt[d.KPZT] ? kpzt[d.KPZT] : "未被合并";
} }
}, }, {
{
field: 'DJJE', title: '单据金额', width: 120, field: 'DJJE', title: '单据金额', width: 120,
templet: function (d) { templet: function (d) {
return '<div style="text-align: right;">' + sctTools.onMoneyFormat(d.DJJE) + '</div>'; return '<div style="text-align: right;">' + sctTools.onMoneyFormat(d.DJJE) + '</div>';
} }
}, }, {
{
field: 'DJSE', title: '单据税额', width: 130, field: 'DJSE', title: '单据税额', width: 130,
templet: function (d) { templet: function (d) {
return '<div style="text-align: right;">' + sctTools.onMoneyFormat(d.DJSE) + '</div>'; return '<div style="text-align: right;">' + sctTools.onMoneyFormat(d.DJSE) + '</div>';
} }
}, },
{field: 'BXR', title: '报销人', width: 160, align: 'left'}, { {field: 'BXR', title: '报销人', width: 160, align: 'left'},
field: 'BXSJ', title: '报销时间', width: 130, {field: 'BXSJ', title: '报销时间', width: 180, align: 'center'},
{field: 'BXZT', title: '报销状态', width: 120, align: 'center',
templet: function (d) { templet: function (d) {
if(!!d.BXSJ){ return FybxUtil.getBxzt_label(d.BXZT);
var time = new Date(d.BXSJ);
var year = time.getFullYear();
var mon = time.getMonth() + 1;
if (mon < 10) {
mon = '0' + mon;
}
var day = time.getDay();
if (day < 10) {
day = '0' + day;
}
return '<div style="text-align: center;">' + year + '-' + mon + '-' + day + '</div>';
}
return '';
}
},
{
field: 'BXZT', title: '报销状态', width: 120,
templet: function (d) {
var text = ' ';
if (d.BXZT === '1') {
text = '<span style="color: #0A5FA2">未报销</span>';
} else if (d.BXZT === '2') {
text = '<span style="color: #00caed">报销中</span>';
} else if (d.BXZT === '3') {
text = '<span style="color: #333">已报销</span>';
}
return text;
} }
}, },
{field: 'KHSH', title: '客户税号', width: 160, align: 'left'}, {field: 'KHSH', title: '客户税号', width: 160, align: 'left'},
{field: 'KHMC', title: '客户名称', width: 160, align: 'left'}, {field: 'KHMC', title: '客户名称', width: 160, align: 'left'},
{ {
title: '操作', fixed: 'right', width: 220, align: 'center', title: '操作', fixed: 'right', width: 220, align: 'center',
templet: function (data) { templet: function (data) {
@ -249,7 +168,7 @@ var kpsq_list = (function () {
DJLX: $("#DJLX").val(), DJLX: $("#DJLX").val(),
BXZT: $("#BXZT").val() BXZT: $("#BXZT").val()
}, },
url: "/web/xxgl/xmkpgl/fybx/findAll.do", url: "/web/xxgl/xmkpgl/fybx/findAll",
dataType: "json", dataType: "json",
cols: [getCols()], cols: [getCols()],
parseData: function (res) { parseData: function (res) {
@ -354,6 +273,7 @@ var kpsq_list = (function () {
return false; return false;
} else if (data.length === 1) { } else if (data.length === 1) {
var row = data[0]; var row = data[0];
// 已报销
if (row.BXZT === 3) { if (row.BXZT === 3) {
layui.use('layer', function () { layui.use('layer', function () {
var layer = layui.layer; var layer = layui.layer;
@ -363,7 +283,8 @@ var kpsq_list = (function () {
}); });
return false; return false;
} }
if (row.BXZT === 2) { // 报销中
else if (row.BXZT === 2) {
layui.use('layer', function () { layui.use('layer', function () {
var layer = layui.layer; var layer = layui.layer;
layer.ready(function () { layer.ready(function () {
@ -373,7 +294,7 @@ var kpsq_list = (function () {
return false; return false;
} }
row.BJRQ = new Date(row.BJRQ); row.BJRQ = new Date(row.BJRQ);
top.window.iframeLayerData = {FYBX_obj: row}; top.window.iframeLayerData = {transParams: row};
top.sctTools.openPage({ top.sctTools.openPage({
type: 2, type: 2,
id: 'win_kpsq_editfpxx', id: 'win_kpsq_editfpxx',
@ -502,11 +423,11 @@ var kpsq_list = (function () {
} }
var ids = ""; var ids = "";
var ysh = 0;//多选后,批量删除时,判断其中已通过审批的开票申请记录数 var ybx = 0;//多选后,批量删除时,判断其中已报销的记录数
for (var i = 0; i < data.length; i++) { for (var i = 0; i < data.length; i++) {
if (data[i].SQZT == kpsq_util.onGetSqztValue("审批通过")) {//已审批的 if (data[i].BXZT == FybxUtil.onGetSqztValue("审批通过")) {// 已报销
ysh++; ybx++;
} else { } else {
ids += data[i].SQID; ids += data[i].SQID;
if (i < (data.length - 1)) { if (i < (data.length - 1)) {

View File

@ -30,13 +30,12 @@ var kpsq_add =(function(){
}]; }];
tablePublic.onReset(curSeg,tableType); tablePublic.onReset(curSeg,tableType);
var optionStr = '<option value="">--请选择--</option>' + var djlxOptions = [];
'<option value="'+kpsq_util.onGetFplxValue("全电专用发票")+'">全电专用发票</option>\n' + djlxOptions.push('<option value="" >--全部--</option>');
'<option value="'+kpsq_util.onGetFplxValue("全电普票发票")+'">全电普票发票</option>\n' + FybxUtil.Enums.djlx.forEach(function(item,index,arr){
'<option value="'+kpsq_util.onGetFplxValue("增值税专用发票")+'">增值税专用发票</option>\n' + djlxOptions.push('<option value="' + item.value + '" >' + item.label + '</option>');
'<option value="'+kpsq_util.onGetFplxValue("增值税普通发票")+'">增值税普通发票</option>\n' + });
'<option value="'+kpsq_util.onGetFplxValue("增值税电子发票")+'">增值税电子发票</option>'; $("#DJLX").html(djlxOptions.join());
$('#DJLX').html(optionStr);
layui.use(['form','element','jquery','layer'], function () { layui.use(['form','element','jquery','layer'], function () {
form = layui.form; form = layui.form;

View File

@ -1,19 +1,17 @@
$(function(){ $(function () {
kpsq_edit.onload(); kpsq_edit.onload();
}); });
var kpsq_edit =(function(){ var kpsq_edit = (function () {
//私有属性 //私有属性
var curSeg; var curSeg;
var selectedKpsqObj;//选定的开票申请记录 var selectedObj;//选定的开票申请记录
var SQZJE;//开票申请总金额 var tableId = 'tbSave_fymx';
var selectToAddHtmx;//当前选中添加到开票明细的合同明细数据集
var inithjhsje = 0;
//私有方法 //私有方法
//初始化页面布局 //初始化页面布局
var initLayout = function(){ var initLayout = function () {
selectedKpsqObj=top.window.iframeLayerData.FYBX_obj; selectedObj = top.window.iframeLayerData.transParams;
layui.use('laydate', function () { layui.use('laydate', function () {
var laydate = layui.laydate; var laydate = layui.laydate;
@ -24,33 +22,48 @@ var kpsq_edit =(function(){
}); });
//初始化公用可操作表格组件 //初始化公用可操作表格组件
var tableType=[{ var tableType = [{
"table_id":"tbSave_kpmx",//动态表ID "table_id": "tbSave_fymx",//动态表ID
"tr_id":"trid_kpmx", //新增行模板ID "tr_id": "trid_fymx", //新增行模板ID
"rowno_name":"rowno_kpmx", "rowno_name": "rowno_kpmx",
"rowno_type":"span" "rowno_type": "span"
}]; }];
tablePublic.onReset(curSeg,tableType); tablePublic.onReset(curSeg, tableType);
var optionStr = '<option value="">--请选择--</option>' + var djlxOptions = [];
' <option value="'+kpsq_util.onGetFplxValue("全电专用发票")+'">全电专用发票</option>\n' + djlxOptions.push('<option value="" >--全部--</option>');
' <option value="'+kpsq_util.onGetFplxValue("全电普票发票")+'">全电普票发票</option>\n' + FybxUtil.Enums.djlx.forEach(function (item, index, arr) {
' <option value="'+kpsq_util.onGetFplxValue("增值税专用发票")+'">增值税专用发票</option>\n' + djlxOptions.push('<option value="' + item.value + '" >' + item.label + '</option>');
' <option value="'+kpsq_util.onGetFplxValue("增值税普通发票")+'">增值税普通发票</option>\n' + });
' <option value="'+kpsq_util.onGetFplxValue("增值税电子发票")+'">增值税电子发票</option>'; $("#DJLX").html(djlxOptions.join());
$('#DJLX').html(optionStr);
initFylxSelect();
layui.use(['form'], function () { layui.use(['form'], function () {
form = layui.form; form = layui.form;
selectedKpsqObj = JSON.stringify(selectedKpsqObj); selectedObj = JSON.stringify(selectedObj);
selectedKpsqObj = eval('(' + selectedKpsqObj + ')'); selectedObj = eval('(' + selectedObj + ')');
form.val('form_edit', selectedKpsqObj); form.val('form_edit', selectedObj);
}); });
}; };
/**
* 初始化费用类型下拉框
*/
function initFylxSelect() {
var fylxOptions = [];
fylxOptions.push('<option value="" >--请选择--</option>');
FybxUtil.Enums.fylx.forEach(function (item, index, arr) {
fylxOptions.push('<option value="' + item.value + '" >' + item.label + '</option>');
});
$("select[name=FYLX]").html(fylxOptions.join());
// console.log($("select[name=FYLX]").html());
}
//共有方法 //共有方法
return { return {
//加载数据 //加载数据
onload : function(){ onload: function () {
curSeg = kpsq_edit; curSeg = kpsq_edit;
initLayout(); initLayout();
curSeg.onQueryFydjmx(); curSeg.onQueryFydjmx();
@ -58,7 +71,7 @@ var kpsq_edit =(function(){
}, },
//在开票信息或分包发票扣除表格中插入或删除一行数据时的回调函数 //在开票信息或分包发票扣除表格中插入或删除一行数据时的回调函数
onTableCallBack : function(obj) { onTableCallBack: function (obj) {
if (obj) { if (obj) {
//删除回调 //删除回调
//表格中至少保留一行,不然无法再点击删除 //表格中至少保留一行,不然无法再点击删除
@ -67,35 +80,39 @@ var kpsq_edit =(function(){
if (trCount == 1) {//最少保留一行内容 if (trCount == 1) {//最少保留一行内容
tablePublic.onInsert(this, tableId); tablePublic.onInsert(this, tableId);
} }
}else{ } else {
//插入回调 //插入回调
form.render('select'); // 重新渲染 select 组件 form.render('select'); // 重新渲染 select 组件
} }
}, },
//绑定数据 //绑定数据
bindData : function(jsonObj, xhrArgs){ bindData: function (jsonObj, xhrArgs) {
tablePublic.onResetTable('tbSave_kpmx'); tablePublic.onResetTable(tableId);
tablePublic.onInsertData(jsonObj.data,'tbSave_kpmx'); tablePublic.onInsertData(jsonObj.data, tableId);
setTimeout(function () {
initFylxSelect();
layui.form.render('select'); // 重新渲染 select 组件
}, 100);
}, },
onSavePre: function () { onSavePre: function () {
//监听提交 //监听提交
layui.use(['form'], function() { layui.use(['form'], function () {
var form = layui.form; var form = layui.form;
form.on('submit(formKpsqEdit)', function (data) { form.on('submit(formKpsqEdit)', function (data) {
curSeg.onSave(data.field); curSeg.onSave(data.field);
}); });
}); });
}, },
// 保存数据 // 保存数据
onSave : function(data){ onSave: function (data) {
var url = "/web/xxgl/xmkpgl/fybx/insert";// 新增费用报销,新增和修改页面保存操作调用的是同一个后台方法 var url = "/web/xxgl/xmkpgl/fybx/insert";// 新增费用报销,新增和修改页面保存操作调用的是同一个后台方法
var kpxxList = tablePublic.onSave('tbSave_kpmx'); var kpxxList = tablePublic.onSave('tbSave_fymx');
data["FYMX_list"] = JSON.stringify(kpxxList); data["FYMX_list"] = JSON.stringify(kpxxList);
data["DJBH"] = $("#DJBH").val(); data["DJBH"] = $("#DJBH").val();
data["DJRQ"] = $("#DJRQ").val(); data["DJRQ"] = $("#DJRQ").val();
data["DJLX"] = $("#DJLX_DM").val(); data["DJLX"] = $("#DJLX").val();
data["DJJE"] = $("#DJJE").val(); data["DJJE"] = $("#DJJE").val();
data["DJSE"] = $("#DJSE").val(); data["DJSE"] = $("#DJSE").val();
data["BXR"] = $("#BXR").val(); data["BXR"] = $("#BXR").val();
@ -112,25 +129,25 @@ var kpsq_edit =(function(){
baseTools.xhrAjax({ baseTools.xhrAjax({
url: url, url: url,
params: data, params: data,
callback: [function (jsonObj,xhrArgs) { callback: [function (jsonObj, xhrArgs) {
if(jsonObj.code===1){ if (jsonObj.code === 1) {
kpsq_edit.calPareFuc(); kpsq_edit.calPareFuc();
parent.layer.msg("修改成功", { parent.layer.msg("修改成功", {
icon: 6, icon: 6,
time: 3000 time: 3000
}); });
}else if(jsonObj.code===-1){ } else if (jsonObj.code === -1) {
parent.layer.msg(jsonObj.msg, { parent.layer.msg(jsonObj.msg, {
icon: 2, icon: 2,
time: 3000 time: 3000
}); });
}else if(jsonObj.code===-2){ } else if (jsonObj.code === -2) {
parent.layer.msg(jsonObj.msg, { parent.layer.msg(jsonObj.msg, {
icon: 2, icon: 2,
time: 3000 time: 3000
}); });
baseTools.hideMash(); baseTools.hideMash();
}else if(jsonObj.code===-3){ } else if (jsonObj.code === -3) {
parent.layer.msg(jsonObj.msg, { parent.layer.msg(jsonObj.msg, {
icon: 2, icon: 2,
time: 3000 time: 3000
@ -140,47 +157,51 @@ var kpsq_edit =(function(){
}] }]
}); });
}, },
//删除一行开票信息 /**
onDeleteKpmx:function (obj) { * 删除一行费用明细信息
var kpxxList = tablePublic.onSave('tbSave_kpmx'); * @param obj
if(kpxxList.length == 1){ */
onDeleteKpmx: function (obj) {
var fymxList = tablePublic.onSave(tableId);
if (fymxList.length === 1) {
layui.use('layer', function () { layui.use('layer', function () {
var layer = layui.layer; var layer = layui.layer;
layer.ready(function () { layer.ready(function () {
top.layer.alert("开票信息不能为空!", {icon: 0,closeBtn : 0}); top.layer.alert("费用明细信息不能为空!", {icon: 0, closeBtn: 0});
}) })
}) })
return false; }else{
layer.confirm('是否删除这条费用明细信息?', {icon: 3}, function (index) {
tablePublic.onDelete(obj);
layer.closeAll('dialog');
});
} }
layer.confirm('是否删除这条开票信息?',{icon: 3},function (index) {
tablePublic.onDelete(obj);
layer.closeAll('dialog');
});
}, },
/**
//查询明细历史记录,并回显到界面 * 查询明细历史记录并回显到界面
onQueryFydjmx:function () { */
onQueryFydjmx: function () {
var url = "/web/xxgl/xmkpgl/fybx/selectZZSGL_JX_FYDJMX"; var url = "/web/xxgl/xmkpgl/fybx/selectZZSGL_JX_FYDJMX";
baseTools.xhrAjax({ baseTools.xhrAjax({
url: url, url: url,
params: { params: {
FYID: selectedKpsqObj.FYID FYID: selectedObj.FYID
}, },
callback: [function (jsonObj,xhrArgs) { callback: [function (jsonObj, xhrArgs) {
if(jsonObj.code==0){ if (jsonObj.code == 0) {
curSeg.bindData(jsonObj, xhrArgs); curSeg.bindData(jsonObj, xhrArgs);
}else if(jsonObj.code==-1){ } else if (jsonObj.code == -1) {
parent.layer.msg(jsonObj.msg, { parent.layer.msg(jsonObj.msg, {
icon: 2, icon: 2,
time: 3000 time: 3000
}); });
}else if(jsonObj.code==-2){ } else if (jsonObj.code == -2) {
parent.layer.msg(jsonObj.msg, { parent.layer.msg(jsonObj.msg, {
icon: 2, icon: 2,
time: 3000 time: 3000
}); });
baseTools.hideMash(); baseTools.hideMash();
}else if(jsonObj.code==-3){ } else if (jsonObj.code == -3) {
parent.layer.msg(jsonObj.msg, { parent.layer.msg(jsonObj.msg, {
icon: 2, icon: 2,
time: 3000 time: 3000
@ -192,64 +213,29 @@ var kpsq_edit =(function(){
}, },
//回调父页面函数的方法 2019-7-9 14:41:52 //回调父页面函数的方法 2019-7-9 14:41:52
calPareFuc : function () { calPareFuc: function () {
layui.use("layer", function () { layui.use("layer", function () {
var layer = layui.layer; var layer = layui.layer;
for(var i = 0 ; i < parent.$("body").find("iframe").length ; i++){ for (var i = 0; i < parent.$("body").find("iframe").length; i++) {
var item = parent.$("body").find("iframe")[i]; var item = parent.$("body").find("iframe")[i];
try{ try {
if(item.contentWindow.kpsq_list){ if (item.contentWindow.kpsq_list) {
item.contentWindow.kpsq_list.reOnLoad(); item.contentWindow.kpsq_list.reOnLoad();
} }
}catch (e) { } catch (e) {
} }
} }
parent.layer.closeAll(); parent.layer.closeAll();
}); });
}, },
/**
// 查询当前申请的开票人列表 2020-2-19 16:00:24 rdd * 打开发票选择窗口
onQueryKpry : function(){ */
var url = "/web/xxgl/xmkpgl/kpsq/selectKPRYforKPSQ.do"; openFpxx: function (el) {
$.ajax({
url: url,
data: {
GLNSRSBH: top.window.iframeLayerData.GLNSRSBH,
XTJS_DM: "00035",
noPage:true
},
dataType: "json",
success: function (jsonObj) {
var data = jsonObj.data.list;
/*if(data==null||data.length==0){
}*/
//初始化开票人员下拉选框
var user = '<option value="">--请选择--</option>';
$.each(data,function(index,element){
if(data.length==1){//如果只有一个总包合同,默认选中
user += '<option value="'+ element.USERID +'" selected="selected">' + element.CZRY_MC + '</option>';
}else{
if(index == 0){//如果有多个总包合同,则默认选择第一个 2020-2-11 10:31:07 rdd
user += '<option value="'+ element.USERID +'" selected="selected">' + element.CZRY_MC + '</option>';
}else{
user += '<option value="'+ element.USERID +'">' + element.CZRY_MC + '</option>';
}
}
});
$("#USERID").html(user);
layui.use('form', function () {
var form = layui.form;
form.render();
});
}
})
},
openFpxx: function (){
var _winParam = { var _winParam = {
other: { other: {
parentJs_obj:kpsq_edit parentJs_obj: kpsq_edit
} }
}; };
top.sctTools.openPage({ top.sctTools.openPage({
@ -262,13 +248,18 @@ var kpsq_edit =(function(){
content: '/web/xxgl/xmkpgl/fybx/index_fpxxSelector', content: '/web/xxgl/xmkpgl/fybx/index_fpxxSelector',
btn: ['保存', '关闭'], btn: ['保存', '关闭'],
btnAlign: 'c', btnAlign: 'c',
success: function(layero,index) { success: function (layero, index) {
// 标记当前行 begin
$('#' + tableId).find('tr').attr('data-current', false);
$(el).parents('tr').attr('data-current', true);
// 标记当前行 end
var obj = layero.find("iframe")[0].contentWindow; var obj = layero.find("iframe")[0].contentWindow;
obj.zbhtxx_spbmSelector.onload(_winParam); obj.zbhtxx_spbmSelector.onload(_winParam);
}, },
yes: function (index, layero) { yes: function (index, layero) {
var body = top.layer.getChildFrame("body",index); var body = top.layer.getChildFrame("body", index);
body.find("#zbhtwhAddSpbmSubmit").click(); body.find("#fymxSelectFpSubmit").click();
top.layer.close(index); top.layer.close(index);
}, },
btn2: function (index, layero) { btn2: function (index, layero) {
@ -276,29 +267,52 @@ var kpsq_edit =(function(){
} }
}); });
}, },
//在合同明细中插入一条商品编码数据对应的各字段值 2019-6-27 19:31:17 细节需要优化 /**
onInsertOneSpbm:function (spbmArray) { * 选择发票窗口回调方法
console.log(spbmArray) * @param transData
*/
onSelectFapiao: function (transData) {
var fpids = []; var fpids = [];
var JSHJ = 0, HJJE = 0, HJSE = 0, FPZS = 0; var jshj = 0,
for(var i = 0; i < spbmArray.length; i++){ hjje = 0,
var item = spbmArray[i]; hjse = 0,
FPZS++; fpzs = 0;
JSHJ += (item.JSHJ || 0); transData.forEach(function (item) {
HJJE += (item.JEBHS || 0); fpzs++;
HJSE += (item.SE || 0); jshj += (item.JSHJ || 0);
hjje += (item.JEBHS || 0);
hjse += (item.SE || 0);
fpids.push(item.FPID); fpids.push(item.FPID);
});
var rowData = {};
rowData.FPID = fpids.join(',');
rowData.FPZS = fpzs;
rowData.JSHJ = jshj;
rowData.HJJE = hjje;
rowData.HJSE = hjse;
var currentRow = $('#' + tableId).find('tr[data-current=true]');
if (!!currentRow.length) {
Object.keys(rowData).forEach(name => {
currentRow.find("select[name='" + name + "']").val(rowData[name]);
currentRow.find("input[name='" + name + "']").val(rowData[name]);
currentRow.find("span[name='" + name + "']").text(rowData[name]);
currentRow.find("div[name='" + name + "']").html(rowData[name]);
});
} else {
tablePublic.onInsertData([rowData], tableId);
} }
var data = {
FYLX: '',
FYSY: '',
FPID: fpids.join(','),
FPZS: FPZS,
JSHJ: JSHJ,
HJJE: HJJE,
HJSE: HJSE
};
tablePublic.onInsertData([data],'tbSave_kpmx');
}, },
/**
* 添加一条费用明细
*/
onAddFymxRow: function (obj){
curSeg.onInsert(obj, tableId);
setTimeout(function () {
initFylxSelect();
layui.form.render('select'); // 重新渲染 select 组件
}, 100);
}
}; };
})(); })();

View File

@ -164,7 +164,7 @@ var zbhtxx_spbmSelector =(function(){
layui.use(['form'], function() { layui.use(['form'], function() {
var form = layui.form; var form = layui.form;
var layer = layui.layer; var layer = layui.layer;
form.on('submit(formZbhtwhSaveSpbm)', function () { form.on('submit(formSelectFp)', function () {
layui.use('table', function () { layui.use('table', function () {
var table = layui.table; var table = layui.table;
var selectData = table.checkStatus('table_sb').data; var selectData = table.checkStatus('table_sb').data;
@ -183,7 +183,7 @@ var zbhtxx_spbmSelector =(function(){
} }
var a = selectData; var a = selectData;
var parentJs_obj = _winParam.other.parentJs_obj; var parentJs_obj = _winParam.other.parentJs_obj;
parentJs_obj.onInsertOneSpbm(a); parentJs_obj.onSelectFapiao(a);
} }
}; };
})(); })();

View File

@ -0,0 +1,45 @@
var FybxUtil = (function (){
var DJLX = [
{value: "1",label: "办公费用"},
{value: "2",label: "通讯费"},
{value: "3",label: "差旅费"},
{value: "4",label: "业务费用"},
{value: "5",label: "车辆费用"},
];
var BXZT = [
{value: "1",label: "未报销"},
{value: "2",label: "报销中"},
{value: "3",label: "已报销"},
];
var FYLX = [
{value: "1",label: "办公费用"},
{value: "2",label: "通讯费"},
{value: "3",label: "差旅费"},
{value: "4",label: "业务费用"},
{value: "5",label: "车辆费用"},
];
return {
Enums: {
djlx: DJLX,
bxzt: BXZT,
fylx: FYLX,
},
getDjlx_label: function (value){
/*
var arr = DJLX.filter(it=>value === it.value);
return arr.length > 0 ? arr[0].label : "";
*/
var found = DJLX.find(it=>value === it.value);
return !!found ? found.label : "";
},
getBxzt_label(value){
var found = BXZT.find(it=>value === it.value);
return !!found ? found.label : "";
}
};
})();

View File

@ -16,9 +16,9 @@
<link rel="stylesheet" href="/commons/css/client.css" /> <link rel="stylesheet" href="/commons/css/client.css" />
<script type="text/javascript" src="/commons/common/jquery-ex.js"></script> <script type="text/javascript" src="/commons/common/jquery-ex.js"></script>
<script type="text/javascript" src="/zzsxt/public/zzjgZtree.js"></script> <script type="text/javascript" src="/zzsxt/public/zzjgZtree.js"></script>
<script type="text/javascript" src="/zzsxt/public/kpsqUtil.js"></script>
<script type="text/javascript" src="/commons/js/layui_exts/excel.js"></script> <script type="text/javascript" src="/commons/js/layui_exts/excel.js"></script>
<script type="text/javascript" src="/zzsxt/xxgl/xmkpgl/fybx/index.js?v=2021020202"></script> <script type="text/javascript" src="/zzsxt/xxgl/xmkpgl/fybx/index.js?v=2021020202"></script>
<script type="text/javascript" src="/zzsxt/xxgl/xmkpgl/fybx/index_util.js?v=2021020202"></script>
</head> </head>
<body class="hb100"> <body class="hb100">
<div class="bsdt_box bsdt_box_ztree clearfix hb100 h100"> <div class="bsdt_box bsdt_box_ztree clearfix hb100 h100">

View File

@ -15,9 +15,9 @@
<link rel="stylesheet" href="/commons/common/layui/css/layui.css" /> <link rel="stylesheet" href="/commons/common/layui/css/layui.css" />
<link rel="stylesheet" href="/commons/css/public.css" /> <link rel="stylesheet" href="/commons/css/public.css" />
<script type="text/javascript" src="/zzsxt/xxgl/xmkpgl/fybx/index_add.js"></script> <script type="text/javascript" src="/zzsxt/xxgl/xmkpgl/fybx/index_add.js"></script>
<script type="text/javascript" src="/zzsxt/xxgl/xmkpgl/fybx/index_util.js"></script>
<script type="text/javascript" src="/zzsxt/public/table.js"></script> <script type="text/javascript" src="/zzsxt/public/table.js"></script>
<script type="text/javascript" src="/zzsxt/public/commonUtil.js"></script> <script type="text/javascript" src="/zzsxt/public/commonUtil.js"></script>
<script type="text/javascript" src="/zzsxt/public/kpsqUtil.js"></script>
<script type="text/javascript" src="/zzsxt/public/fileUpload.js"></script> <script type="text/javascript" src="/zzsxt/public/fileUpload.js"></script>
<style type="text/css"> <style type="text/css">
input::-webkit-input-placeholder{ input::-webkit-input-placeholder{

View File

@ -15,8 +15,8 @@
<link rel="stylesheet" href="/commons/common/layui/css/layui.css" /> <link rel="stylesheet" href="/commons/common/layui/css/layui.css" />
<link rel="stylesheet" href="/commons/css/public.css" /> <link rel="stylesheet" href="/commons/css/public.css" />
<script type="text/javascript" src="/zzsxt/xxgl/xmkpgl/fybx/index_edit.js"></script> <script type="text/javascript" src="/zzsxt/xxgl/xmkpgl/fybx/index_edit.js"></script>
<script type="text/javascript" src="/zzsxt/xxgl/xmkpgl/fybx/index_util.js"></script>
<script type="text/javascript" src="/zzsxt/public/table.js"></script> <script type="text/javascript" src="/zzsxt/public/table.js"></script>
<script type="text/javascript" src="/zzsxt/public/kpsqUtil.js"></script>
<script type="text/javascript" src="/zzsxt/public/fileUpload.js"></script> <script type="text/javascript" src="/zzsxt/public/fileUpload.js"></script>
<script type="text/javascript" src="/zzsxt/public/commonUtil.js"></script> <script type="text/javascript" src="/zzsxt/public/commonUtil.js"></script>
<style type="text/css"> <style type="text/css">
@ -205,7 +205,7 @@
费用明细 费用明细
</div> </div>
<div class="m_table table_h"> <div class="m_table table_h">
<table cellspacing="0" cellpadding="0" border="0" class="layui-table" id="tbSave_kpmx" lay-filter="tbSave_kpmx" > <table cellspacing="0" cellpadding="0" border="0" class="layui-table" id="tbSave_fymx" lay-filter="tbSave_fymx" >
<thead> <thead>
<tr> <tr>
<th style="width: 3%;">序号</th> <th style="width: 3%;">序号</th>
@ -219,7 +219,7 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr id="trid_kpmx"> <tr id="trid_fymx">
<td align="center"> <td align="center">
<input type="hidden" name="FYMXID"/> <input type="hidden" name="FYMXID"/>
<input type="hidden" name="FYID"/> <input type="hidden" name="FYID"/>
@ -228,12 +228,7 @@
<input type="hidden" name="ROWTYPE" value="NEW" /> <input type="hidden" name="ROWTYPE" value="NEW" />
</td> </td>
<td> <td>
<select name="FYLX" lay-verify="" lay-filter=""> <select name="FYLX" lay-verify="" lay-filter=""></select>
<option value="" >请选择</option>
<option value="004">增值税专票</option>
<option value="007">增值税普票</option>
<option value="026">增值税电票</option>
</select>
</td> </td>
<td> <td>
<input type="text" name="FYSY" class="layui-input" placeholder="费用事由"/> <input type="text" name="FYSY" class="layui-input" placeholder="费用事由"/>
@ -253,7 +248,7 @@
<td> <td>
<div class="m_table_btn"> <div class="m_table_btn">
<span class="s_fc_blue" onclick="kpsq_edit.openFpxx(this);">关联发票</span> <span class="s_fc_blue" onclick="kpsq_edit.openFpxx(this);">关联发票</span>
<span class="s_fc_blue" onclick="tablePublic.onInsert(this, 'tbSave_kpmx');">增加</span> <span class="s_fc_blue" onclick="kpsq_edit.onAddFymxRow(this);">增加</span>
<span class="s_fc_red" onclick="kpsq_edit.onDeleteKpmx(this);">删除</span> <span class="s_fc_red" onclick="kpsq_edit.onDeleteKpmx(this);">删除</span>
</div> </div>
</td> </td>

View File

@ -48,7 +48,7 @@
</div> </div>
</div> </div>
</form> </form>
<form class="layui-form" name="formSpbmSel" id="formSpbmSel" method="get" action="" lay-filter="formSpbmSel"> <form class="layui-form" name="selectFpForm" id="selectFpForm" method="get" action="" lay-filter="selectFpForm">
<div class="layui-fluid g_index"> <div class="layui-fluid g_index">
<div class="layui-card"> <div class="layui-card">
<div class="table_h"> <div class="table_h">
@ -59,8 +59,8 @@
<div <div
class="layui-btn save" class="layui-btn save"
lay-submit="" lay-submit=""
lay-filter="formZbhtwhSaveSpbm" lay-filter="formSelectFp"
id="zbhtwhAddSpbmSubmit" id="fymxSelectFpSubmit"
> >
保存 保存
</div> </div>