first commit
This commit is contained in:
@@ -0,0 +1,227 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-page">
|
||||
<h3 class="pb-2">新增采购合同</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray">合同名称<font>*</font></td>
|
||||
<td colspan="3"><input type="text" name="name" value="" lay-verify="required" lay-reqText="请输入合同名称" autocomplete="off" placeholder="请输入合同名称" class="layui-input"></td>
|
||||
<td class="layui-td-gray">合同性质</td>
|
||||
<td>
|
||||
<input type="hidden" name="types" value="{$types}">
|
||||
{eq name="$types" value="1" }普通采购{/eq}
|
||||
{eq name="$types" value="2" }物品采购{/eq}
|
||||
{eq name="$types" value="3" }服务采购{/eq}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">签约主体<span style="font-size:12px;">(甲方)</span><font>*</font></td>
|
||||
<td colspan="3">
|
||||
<select name="subject_id" lay-verify="required" lay-reqText="请选择签约主体公司">
|
||||
<option value="">请选择签约主体公司</option>
|
||||
{volist name=":get_base_data('Enterprise')" id="v"}
|
||||
<option value="{$v.id}">{$v.title}</option>
|
||||
{/volist}
|
||||
</select>
|
||||
</td>
|
||||
<td class="layui-td-gray-2">合同始止日期<font>*</font></td>
|
||||
<td id="barDate" style="width:320px;">
|
||||
<div class="layui-input-inline" style="width:150px;">
|
||||
<input type="text" class="layui-input" id="start_time" value="" placeholder="选择时间区间" readonly name="start_time" lay-verify="required" lay-reqText="请选择合同开始时间">
|
||||
</div>
|
||||
~
|
||||
<div class="layui-input-inline" style="width:150px;">
|
||||
<input type="text" class="layui-input" id="end_time" value="" placeholder="选择时间区间" readonly name="end_time" lay-verify="required" lay-reqText="请选择合同结束时间">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">供应商名称<span style="font-size:12px;">(乙方)</span><font>*</font></td>
|
||||
<td colspan="3">
|
||||
{eq name="$is_supplier" value="1"}
|
||||
<input type="text" name="supplier" autocomplete="off" value="" readonly lay-verify="required" lay-reqText="请输入供应商名称" placeholder="请输入供应商名称" class="layui-input supplier-picker">
|
||||
{else/}
|
||||
<input type="text" name="supplier" autocomplete="off" value="" lay-verify="required" lay-reqText="请输入供应商名称" placeholder="请输入供应商名称" class="layui-input">
|
||||
{/eq}
|
||||
<input type="hidden" name="supplier_id" value="0">
|
||||
</td>
|
||||
<td class="layui-td-gray">签约供应商代表<font>*</font></td>
|
||||
<td><input type="text" name="contact_name" value="" autocomplete="off" lay-verify="required" lay-reqText="请输入供应商代表姓名" placeholder="请输入供应商代表姓名" class="layui-input"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-3">供应商联系地址</td>
|
||||
<td colspan="3"><input type="text" name="contact_address" value="" autocomplete="off" placeholder="请输入供应商联系地址" class="layui-input"></td>
|
||||
<td class="layui-td-gray-3">供应商联系电话</td>
|
||||
<td><input type="text" name="contact_mobile" value="" autocomplete="off" placeholder="请输入供应商联系电话" class="layui-input"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">合同金额<font>*</font></td>
|
||||
<td>
|
||||
{eq name="$types" value="1"}
|
||||
<input type="text" name="cost" value="" lay-verify="required|number" lay-reqText="请输入合同金额,数字" placeholder="请输入合同金额,数字" autocomplete="off" class="layui-input">
|
||||
{/eq}
|
||||
{eq name="$types" value="2"}
|
||||
<input type="text" name="cost" value="" lay-verify="required|number" lay-reqText="请完善物品信息" placeholder="完善物品信息,合同金额自动计算" readonly class="layui-input layui-input-readonly">
|
||||
{/eq}
|
||||
{eq name="$types" value="3"}
|
||||
<input type="text" name="cost" value="" lay-verify="required|number" lay-reqText="请完善服务信息" placeholder="完善服务信息,合同金额自动计算" readonly class="layui-input layui-input-readonly">
|
||||
{/eq}
|
||||
</td>
|
||||
<td class="layui-td-gray">合同类别<font>*</font></td>
|
||||
<td>
|
||||
<select name="cate_id" lay-verify="required" lay-reqText="请选择合同类别">
|
||||
<option value="">请选择合同类别</option>
|
||||
{volist name=":get_base_data('ContractCate');" id="vo"}
|
||||
<option value="{$vo.id}">{$vo.title}</option>
|
||||
{/volist}
|
||||
</select>
|
||||
</td>
|
||||
<td class="layui-td-gray">合同编号<font>*</font></td>
|
||||
<td><input type="text" name="code" value="{$codeno}" autocomplete="off" {eq name="$is_codeno" value="1"}readonly{/eq} lay-verify="required" lay-reqText="请输入合同编号" placeholder="请输入合同编号" class="layui-input"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6"><strong>签订信息</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">合同签订人<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="sign_name" value="" autocomplete="off" readonly lay-verify="required" lay-reqText="请选择合同签订人" placeholder="请选择合同签订人" class="layui-input picker-diy">
|
||||
<input type="hidden" name="sign_uid" value="0">
|
||||
</td>
|
||||
<td class="layui-td-gray-2">合同所属部门<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="sign_department" value="" autocomplete="off" readonly lay-verify="required" lay-reqText="请选择合同所属部门" placeholder="请选择合同所属部门" class="layui-input picker-oa" data-types="department">
|
||||
<input type="hidden" name="did" value="0">
|
||||
</td>
|
||||
<td class="layui-td-gray-2">合同签订日期<font>*</font></td>
|
||||
<td><input type="text" name="sign_time" value="" readonly lay-verify="required" lay-reqText="请选择合同签订日期" placeholder="请选择合同签订日期" class="layui-input tool-time"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">合同制定人</td>
|
||||
<td>
|
||||
<input type="text" name="prepared_name" value="" readonly placeholder="请选择合同制定人" class="layui-input picker-admin">
|
||||
<input type="hidden" name="prepared_uid" value="0">
|
||||
</td>
|
||||
<td class="layui-td-gray-2">合同保管人</td>
|
||||
<td>
|
||||
<input type="text" name="keeper_name" value="" readonly placeholder="请选择合同保管人" class="layui-input picker-admin">
|
||||
<input type="hidden" name="keeper_uid" value="0">
|
||||
</td>
|
||||
<td class="layui-td-gray">合同共享人员</td>
|
||||
<td colspan="3">
|
||||
<input type="text" name="share_names" value="" readonly placeholder="请选择共享人员" class="layui-input picker-admin" data-type="2">
|
||||
<input type="hidden" name="share_ids" value="">
|
||||
</td>
|
||||
</tr>
|
||||
{eq name="$types" value="2"}{include file="/purchase/add_purchased"}{/eq}
|
||||
{eq name="$types" value="3"}{include file="/purchase/add_service"}{/eq}
|
||||
<tr>
|
||||
<td colspan="6"><strong>相关附件</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">
|
||||
<button type="button" class="layui-btn layui-btn-sm" id="uploadBtn"><i class="layui-icon"></i>附件上传</button>
|
||||
</td>
|
||||
<td colspan="5">
|
||||
<div class="layui-row" id="uploadBox">
|
||||
<input type="hidden" id="fileBoxInput" data-type="file" name="file_ids" value="">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6"><strong>备注信息</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6"><textarea name="remark" placeholder="请输入备注信息" class="layui-textarea"></textarea></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="pt-4">
|
||||
<input type="hidden" name="scene" value="add">
|
||||
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">提交保存</button>
|
||||
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
|
||||
</div>
|
||||
</form>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool','oaPicker','uploadPlus'];
|
||||
function gouguInit() {
|
||||
var form = layui.form,tool=layui.tool,laydate = layui.laydate, oaPicker = layui.oaPicker,uploadPlus = layui.uploadPlus;
|
||||
if(typeof purchased_fun==='function'){
|
||||
purchased_fun(layui);
|
||||
}
|
||||
if(typeof service_fun==='function'){
|
||||
service_fun(layui);
|
||||
}
|
||||
//日期范围
|
||||
laydate.render({
|
||||
elem: '#barDate',
|
||||
range: ['#start_time', '#end_time']
|
||||
});
|
||||
//附件上传
|
||||
var attachment = new uploadPlus({
|
||||
"target":'uploadBtn',
|
||||
"targetBox":'uploadBox'
|
||||
});
|
||||
|
||||
//选择员工弹窗
|
||||
$('body').on('click','.picker-diy',function () {
|
||||
let that = $(this);
|
||||
let ids=that.next().val()+'',names = that.val()+'';
|
||||
oaPicker.employeeInit({
|
||||
ids:ids,
|
||||
names:names,
|
||||
type:1,//1是单选,2是多选
|
||||
callback:function(data){
|
||||
//这里是选择后的回调方法,可以根据具体需求自定义写哦
|
||||
let select_id=[],select_name=[];
|
||||
for(var a=0; a<data.length;a++){
|
||||
select_id.push(data[a].id);
|
||||
select_name.push(data[a].name);
|
||||
}
|
||||
that.val(select_name.join(','));
|
||||
that.next().val(select_id.join(','));
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
//选择供应商弹窗
|
||||
$('body').on('click','.supplier-picker',function () {
|
||||
let that = $(this),ids = [],titles=[],contact_name=[],contact_mobile=[],address=[],map = {},types = 'supplier',type = 1;
|
||||
let callback = function(data){
|
||||
for ( var i = 0; i <data.length; i++){
|
||||
ids.push(data[i].id);
|
||||
titles.push(data[i].title);
|
||||
contact_name.push(data[i].contact_name);
|
||||
contact_mobile.push(data[i].contact_mobile);
|
||||
address.push(data[i].address);
|
||||
}
|
||||
that.val(titles.join(','));
|
||||
that.next().val(ids.join(','));
|
||||
$('[name="contact_name"]').val(contact_name.join(','));
|
||||
$('[name="contact_mobile"]').val(contact_mobile.join(','));
|
||||
$('[name="contact_address"]').val(address.join(','));
|
||||
}
|
||||
oaPicker.picker(types,type,callback,map);
|
||||
});
|
||||
|
||||
//监听提交
|
||||
form.on('submit(webform)', function (data) {
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
tool.sideClose(1000);
|
||||
}
|
||||
}
|
||||
let clickbtn = $(this);
|
||||
tool.post("/contract/purchase/add", data.field, callback,clickbtn);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,116 @@
|
||||
<tr>
|
||||
<td colspan="6"><strong>物品信息</strong> <span class="layui-btn layui-btn-sm" type="button" id="purchasedAdd">+ 添加物品</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<table id="purchasedTable" class="layui-table layui-table-min" style="margin:0">
|
||||
<tr>
|
||||
<th width="200">物品名称</th>
|
||||
<th width="100">单位</th>
|
||||
<th width="100">规格</th>
|
||||
<th width="100">采购单价</th>
|
||||
<th width="100">数量</th>
|
||||
<th width="100">小计</th>
|
||||
<th>备注信息</th>
|
||||
<th width="60">操作</th>
|
||||
</tr>
|
||||
<tr class="purchased-tr">
|
||||
{eq name="is_purchased" value="1"}
|
||||
<td><input type="text" name="purchased_title[]" value="" class="layui-input purchased-picker" readonly lay-verify="required" lay-reqText="请输入物品名称"><input type="hidden" name="purchased_id[]" value="0"></td>
|
||||
{else/}
|
||||
<td><input type="text" name="purchased_title[]" value="" class="layui-input" lay-verify="required" lay-reqText="请输入物品名称"><input type="hidden" name="purchased_id[]" value="0"></td>
|
||||
{/eq}
|
||||
<td><input type="text" name="purchased_unit[]" value="" class="layui-input" lay-verify="required" lay-reqText="请输入单位"></td>
|
||||
<td><input type="text" name="purchased_specs[]" value="" class="layui-input" lay-verify="required" lay-reqText="请输入物品规格"></td>
|
||||
<td><input type="text" name="purchased_price[]" value="0.00" class="layui-input input-num" lay-verify="required|number" lay-reqText="请输入采购单价"></td>
|
||||
<td><input type="text" name="purchased_num[]" value="1" class="layui-input input-num" lay-verify="required|number" lay-reqText="请输入物品数量"></td>
|
||||
<td><input type="text" name="purchased_subtotal[]" value="0.00" class="layui-input layui-input-readonly" readonly></td>
|
||||
<td><input type="text" name="purchased_remark[]" value="" class="layui-input"></td>
|
||||
<td><a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<script>
|
||||
const is_purchased={$is_purchased};
|
||||
function purchased_fun(layui){
|
||||
let form = layui.form,oaPicker = layui.oaPicker;
|
||||
|
||||
//选择物品弹窗
|
||||
$('body').on('click','.purchased-picker',function () {
|
||||
let that = $(this),ids = [],titles=[],purchase_price=[],unit=[],specs=[],map = {},types = 'purchased',type = 1;
|
||||
let callback = function(data){
|
||||
for ( var i = 0; i <data.length; i++){
|
||||
ids.push(data[i].id);
|
||||
titles.push(data[i].title);
|
||||
unit.push(data[i].unit);
|
||||
specs.push(data[i].specs);
|
||||
purchase_price.push(data[i].purchase_price);
|
||||
}
|
||||
that.val(titles.join(','));
|
||||
that.next().val(ids.join(','));
|
||||
that.parents('.purchased-tr').find('input').eq(2).val(unit.join(','));
|
||||
that.parents('.purchased-tr').find('input').eq(3).val(specs.join(','));
|
||||
that.parents('.purchased-tr').find('input').eq(4).val(purchase_price.join(','));
|
||||
that.parents('.purchased-tr').find('input').eq(6).val(purchase_price.join(','));
|
||||
count_cost();
|
||||
}
|
||||
oaPicker.picker(types,type,callback,map);
|
||||
});
|
||||
|
||||
//添加物品信息表格
|
||||
$('#purchasedAdd').on('click',function(){
|
||||
var html = '',purchased_title=' class="layui-input"';
|
||||
if(is_purchased==1){
|
||||
purchased_title=' class="layui-input purchased-picker" readonly';
|
||||
}
|
||||
html += '<tr class="purchased-tr">\
|
||||
<td><input type="text" name="purchased_title[]" value="" '+purchased_title+' lay-verify="required" lay-reqText="请输入物品名称"><input type="hidden" name="purchased_id[]" value="0"></td>\
|
||||
<td><input type="text" name="purchased_unit[]" value="" class="layui-input" lay-verify="required" lay-reqText="请输入单位"></td>\
|
||||
<td><input type="text" name="purchased_specs[]" value="" class="layui-input" lay-verify="required" lay-reqText="请输入物品规格"></td>\
|
||||
<td><input type="text" name="purchased_price[]" value="0.00" class="layui-input input-num" lay-verify="required|number" lay-reqText="请输入采购单价"></td>\
|
||||
<td><input type="text" name="purchased_num[]" value="1" class="layui-input input-num" lay-verify="required|number" lay-reqText="请输入物品数量"></td>\
|
||||
<td><input type="text" name="purchased_subtotal[]" value="0.00" class="layui-input layui-input-readonly" readonly></td>\
|
||||
<td><input type="text" name="purchased_remark[]" value="" class="layui-input"></td>\
|
||||
<td><a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a></td>\
|
||||
</tr>';
|
||||
$('#purchasedTable').append(html).find('.tr-none').remove();
|
||||
form.render();
|
||||
});
|
||||
|
||||
$('#purchasedTable').on('click', '[lay-event="del"]', function() {
|
||||
if($('.purchased-tr').length<2){
|
||||
layer.msg('至少保留一个物品选项');
|
||||
return false;
|
||||
}
|
||||
$(this).parents('.purchased-tr').remove();
|
||||
count_cost();
|
||||
});
|
||||
|
||||
//计算价格
|
||||
$('#purchasedTable').on('input', '.input-num', function() {
|
||||
var inputs = $(this).parents('.purchased-tr').find("input");
|
||||
var purchased_price = inputs.eq(4).val();
|
||||
var purchased_num = inputs.eq(5).val();
|
||||
var purchased_amount = (purchased_price*purchased_num).toFixed(2);
|
||||
if(isNaN(purchased_amount)){
|
||||
purchased_amount = 0.00;
|
||||
}
|
||||
inputs.eq(6).val(purchased_amount);
|
||||
count_cost();
|
||||
});
|
||||
|
||||
//计算总价
|
||||
function count_cost(){
|
||||
var purchased_subtotal = $('#purchasedTable').find('[name="purchased_subtotal[]"]');
|
||||
var total = 0;
|
||||
for (var m = 0; m < purchased_subtotal.length; m++) {
|
||||
total+=$(purchased_subtotal[m]).val()*1000;
|
||||
}
|
||||
if(isNaN(total)){
|
||||
total = 0;
|
||||
}
|
||||
$('[name="cost"]').val((total/1000).toFixed(2));
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,82 @@
|
||||
<tr>
|
||||
<td class="layui-td-gray" colspan="6" style="text-align:left; color:#666"><strong>服务信息</strong> <span class="layui-btn layui-btn-sm" type="button" id="serviceAdd">+ 添加服务</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<table id="serviceTable" class="layui-table layui-table-min" style="margin:0">
|
||||
<tr>
|
||||
<th width="200">服务名称</th>
|
||||
<th width="200">服务周期</th>
|
||||
<th width="100">服务单价</th>
|
||||
<th width="100">服务次数</th>
|
||||
<th width="100">小计</th>
|
||||
<th>备注信息</th>
|
||||
<th width="60">操作</th>
|
||||
</tr>
|
||||
<tr class="service-tr">
|
||||
<td><input type="text" name="service_title[]" value="" class="layui-input" lay-verify="required" lay-reqText="请输入服务名称"></td>
|
||||
<td><input type="text" name="service_date[]" value="" class="layui-input layui-input-readonly tool-time" data-range="到" lay-verify="required" lay-reqText="请选择服务周期" readonly></td>
|
||||
<td><input type="text" name="service_price[]" value="0.00" class="layui-input input-num" lay-verify="required|number" lay-reqText="请输入服务单价"></td>
|
||||
<td><input type="text" name="service_num[]" value="1" class="layui-input input-num" lay-verify="required|number" lay-reqText="请输入服务次数"></td>
|
||||
<td><input type="text" name="service_subtotal[]" value="0.00" class="layui-input layui-input-readonly" readonly></td>
|
||||
<td><input type="text" name="service_remark[]" value="" class="layui-input"></td>
|
||||
<td><a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<script>
|
||||
function service_fun(layui){
|
||||
let form = layui.form;
|
||||
//添加服务信息表格
|
||||
$('#serviceAdd').on('click',function(){
|
||||
var html = '';
|
||||
html += '<tr class="service-tr">\
|
||||
<td><input type="text" name="service_title[]" value="" class="layui-input" lay-verify="required" lay-reqText="请输入服务名称"></td>\
|
||||
<td><input type="text" name="service_date[]" value="" class="layui-input layui-input-readonly tool-time" data-range="到" lay-verify="required" lay-reqText="请选择服务周期" readonly></td>\
|
||||
<td><input type="text" name="service_price[]" value="0.00" class="layui-input input-num" lay-verify="required|number" lay-reqText="请输入服务单价"></td>\
|
||||
<td><input type="text" name="service_num[]" value="1" class="layui-input input-num" lay-verify="required|number" lay-reqText="请输入服务次数"></td>\
|
||||
<td><input type="text" name="service_subtotal[]" value="0.00" class="layui-input layui-input-readonly" readonly></td>\
|
||||
<td><input type="text" name="service_remark[]" value="" class="layui-input"></td>\
|
||||
<td><a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a></td>\
|
||||
</tr>';
|
||||
$('#serviceTable').append(html).find('.tr-none').remove();
|
||||
form.render();
|
||||
});
|
||||
|
||||
$('#serviceTable').on('click', '[lay-event="del"]', function() {
|
||||
if($('.service-tr').length<2){
|
||||
layer.msg('至少保留一个服务选项');
|
||||
return false;
|
||||
}
|
||||
$(this).parents('.service-tr').remove();
|
||||
count_cost();
|
||||
});
|
||||
|
||||
//计算价格
|
||||
$('#serviceTable').on('input', '.input-num', function() {
|
||||
var inputs = $(this).parents('.service-tr').find("input");
|
||||
var service_price = inputs.eq(2).val();
|
||||
var service_num = inputs.eq(3).val();
|
||||
var service_amount = (service_price*service_num).toFixed(2);
|
||||
if(isNaN(service_amount)){
|
||||
service_amount = 0.00;
|
||||
}
|
||||
inputs.eq(4).val(service_amount);
|
||||
count_cost();
|
||||
});
|
||||
|
||||
//计算总价
|
||||
function count_cost(){
|
||||
var service_subtotal = $('#serviceTable').find('[name="service_subtotal[]"]');
|
||||
var total = 0;
|
||||
for (var m = 0; m < service_subtotal.length; m++) {
|
||||
total+=$(service_subtotal[m]).val()*1000;
|
||||
}
|
||||
if(isNaN(total)){
|
||||
total = 0;
|
||||
}
|
||||
$('[name="cost"]').val((total/1000).toFixed(2));
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,34 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-page">
|
||||
<h3 class="pb-2">新增合同</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td>选择合同性质</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="layui-btn-group">
|
||||
<a href="/contract/purchase/add?types=1" class="layui-btn">普通采购</a>
|
||||
<a href="/contract/purchase/add?types=2" class="layui-btn">物品采购</a>
|
||||
<a href="/contract/purchase/add?types=3" class="layui-btn">服务采购</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
{/block}
|
||||
{block name="copyright"}{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool'];
|
||||
function gouguInit() {
|
||||
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,178 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
|
||||
<div class="p-page">
|
||||
<div class="layui-card border-x border-t" style="margin-bottom:0; box-shadow:0 0 0 0 rgb(5 32 96 / 0%)">
|
||||
<div class="body-table layui-tab layui-tab-brief" lay-filter="tab">
|
||||
<ul class="layui-tab-title">
|
||||
<li><a href="/contract/contract/archivelist">销售合同</a></li>
|
||||
<li class="layui-this"><a href="/contract/purchase/archivelist">采购合同</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<form class="layui-form gg-form-bar border-x">
|
||||
<div class="layui-input-inline" style="width:122px;">
|
||||
<select name="types">
|
||||
<option value="">选择合同性质</option>
|
||||
<option value="1">普通采购</option>
|
||||
<option value="2">物品采购</option>
|
||||
<option value="3">服务采购</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:122px;">
|
||||
<select name="cate_id">
|
||||
<option value="">选择合同类别</option>
|
||||
{volist name=":get_base_data('ContractCate');" id="vo"}
|
||||
<option value="{$vo.id}">{$vo.title}</option>
|
||||
{/volist}
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:175px;">
|
||||
<input type="text" class="layui-input" id="sign_time" placeholder="选择合同签订日期" readonly name="sign_time">
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:175px;">
|
||||
<input type="text" class="layui-input" id="end_time" placeholder="选择合同到期日期" readonly name="end_time">
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:220px;">
|
||||
<input type="text" name="keywords" placeholder="输入关键字,合同编号/合同名称" class="layui-input" autocomplete="off" />
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:150px">
|
||||
<input type="hidden" name="tab" value="0" />
|
||||
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="table-search"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
|
||||
<button type="reset" class="layui-btn layui-btn-reset" lay-filter="table-reset">清空</button>
|
||||
</div>
|
||||
</form>
|
||||
<table class="layui-hide" id="table_contract" lay-filter="table_contract"></table>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<div class="layui-btn-container">
|
||||
<h3>归档合同</h3>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const delay_num = {$delay_num|default=30};
|
||||
const moduleInit = ['tool','tablePlus','laydatePlus'];
|
||||
function gouguInit() {
|
||||
var table = layui.tablePlus,dropdown = layui.dropdown, tool = layui.tool,laydatePlus = layui.laydatePlus;
|
||||
//日期范围
|
||||
var sign_time = new laydatePlus({'target':'sign_time'});
|
||||
var end_time = new laydatePlus({'target':'end_time'});
|
||||
layui.pageTable = table.render({
|
||||
elem: "#table_contract"
|
||||
, toolbar: "#toolbarDemo"
|
||||
,url: "/contract/purchase/archivelist"
|
||||
,is_excel: true
|
||||
,page: true
|
||||
,limit: 20
|
||||
,cellMinWidth: 60
|
||||
,height: 'full-154'
|
||||
,cols: [[ //表头
|
||||
{
|
||||
field: 'id',
|
||||
title: 'ID号',
|
||||
align: 'center',
|
||||
width: 80
|
||||
},{
|
||||
field: 'code',
|
||||
title: '合同编号',
|
||||
align: 'center',
|
||||
width: 150
|
||||
},{
|
||||
field: 'name',
|
||||
title: '合同名称',
|
||||
minWidth:240,
|
||||
templet: '<div><a data-href="/contract/purchase/view/id/{{d.id}}.html" class="side-a">{{d.name}}</a></div>'
|
||||
},{
|
||||
field: 'cate_title',
|
||||
title: '合同类别',
|
||||
align: 'center',
|
||||
width: 100
|
||||
},{
|
||||
field: 'types_name',
|
||||
title: '合同性质',
|
||||
align: 'center',
|
||||
width: 80,
|
||||
templet: function (d) {
|
||||
var html = '<span class="layui-color-' + d.types + '">' + d.types_name + '</span>';
|
||||
return html;
|
||||
}
|
||||
},{
|
||||
field: 'interval_time',
|
||||
title: '合同有效时间',
|
||||
align: 'center',
|
||||
width: 268,
|
||||
templet: function (d) {
|
||||
var html = d.interval_time;
|
||||
if (d.delay > 0 && d.delay < delay_num) {
|
||||
html += '<span class="red ml-1" style="font-size:12px;">' + d.delay + '天后到期</span>';
|
||||
}
|
||||
if (d.delay == 0) {
|
||||
html += '<span class="red ml-1" style="font-size:12px;">已过期</span>';
|
||||
}
|
||||
return html;
|
||||
}
|
||||
},{
|
||||
field: 'cost',
|
||||
title: '合同金额(元)',
|
||||
align: 'right',
|
||||
width: 100
|
||||
},{
|
||||
field: 'archive_name',
|
||||
title: '归档人',
|
||||
align: 'center',
|
||||
width: 80
|
||||
},{
|
||||
field: 'archive_time',
|
||||
title: '归档日期',
|
||||
align: 'center',
|
||||
width: 90
|
||||
},{
|
||||
field: 'sign_name',
|
||||
title: '签定人',
|
||||
align: 'center',
|
||||
width: 80
|
||||
},{
|
||||
field: 'sign_time',
|
||||
title: '签订日期',
|
||||
align: 'center',
|
||||
width: 90
|
||||
},{
|
||||
field: 'keeper_name',
|
||||
title: '保管人',
|
||||
align: 'center',
|
||||
width: 80
|
||||
},{
|
||||
field: 'right',
|
||||
fixed:'right',
|
||||
title: '操作',
|
||||
width: 60,
|
||||
align: 'center',
|
||||
ignoreExport:true,
|
||||
templet: function (d) {
|
||||
var btn0='<span class="layui-btn layui-btn-normal layui-btn-xs" lay-event="view">详情</span>';
|
||||
return btn0;
|
||||
}
|
||||
}
|
||||
]]
|
||||
});
|
||||
|
||||
table.on('tool(table_contract)',function (obj) {
|
||||
var checkStatus = table.checkStatus(obj.config.id); //获取选中行状态
|
||||
var data = obj.data;
|
||||
if (obj.event === 'view') {
|
||||
tool.side("/contract/purchase/view?id="+data.id);
|
||||
return;
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,256 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
|
||||
<div class="p-page">
|
||||
<div class="layui-card border-x border-t" style="margin-bottom:0; box-shadow:0 0 0 0 rgb(5 32 96 / 0%)">
|
||||
<div class="body-table layui-tab layui-tab-brief" lay-filter="tab">
|
||||
<ul class="layui-tab-title">
|
||||
<li class="layui-this">全部</li>
|
||||
<li>待我审批</li>
|
||||
<li>我已审批</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<form class="layui-form gg-form-bar border-x" id="barsearchform" lay-filter="barsearchform">
|
||||
{gt name="$is_auth" value="0"}
|
||||
<div class="layui-input-inline user-name" style="width:90px;">
|
||||
<input type="text" name="username" placeholder="选择签定人" class="layui-input picker-admin" readonly />
|
||||
<input type="text" name="uid" value="" style="display:none" />
|
||||
</div>
|
||||
{else/}
|
||||
{gt name="$is_leader" value="0"}
|
||||
<div class="layui-input-inline user-name" style="width:90px;">
|
||||
<input type="text" name="username" placeholder="选择签定人" class="layui-input picker-sub" readonly />
|
||||
<input type="text" name="uid" value="" style="display:none" />
|
||||
</div>
|
||||
{/gt}
|
||||
{/gt}
|
||||
<div class="layui-input-inline" style="width:122px;">
|
||||
<select name="types">
|
||||
<option value="">选择合同性质</option>
|
||||
<option value="1">普通采购</option>
|
||||
<option value="2">物品采购</option>
|
||||
<option value="3">服务采购</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:122px;">
|
||||
<select name="cate_id">
|
||||
<option value="">选择合同类别</option>
|
||||
{volist name=":get_base_data('ContractCate');" id="vo"}
|
||||
<option value="{$vo.id}">{$vo.title}</option>
|
||||
{/volist}
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:122px;">
|
||||
<select name="check_status">
|
||||
<option value="">选择审批状态</option>
|
||||
{volist name=":get_check_status()" id="vo"}
|
||||
<option value="{$key}">{$vo}</option>
|
||||
{/volist}
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:175px;">
|
||||
<input type="text" class="layui-input" id="sign_time" placeholder="选择合同签订日期" readonly name="sign_time">
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:175px;">
|
||||
<input type="text" class="layui-input" id="end_time" placeholder="选择合同到期日期" readonly name="end_time">
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:220px;">
|
||||
<input type="text" name="keywords" placeholder="输入关键字,合同编号/合同名称" class="layui-input" />
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:150px">
|
||||
<input type="hidden" name="tab" value="0" />
|
||||
<input type="hidden" name="order_field" value=''>
|
||||
<input type="hidden" name="order_type" value=''>
|
||||
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="table-search"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
|
||||
<button type="reset" class="layui-btn layui-btn-reset" lay-filter="table-reset">清空</button>
|
||||
</div>
|
||||
</form>
|
||||
<table class="layui-hide" id="table_contract" lay-filter="table_contract"></table>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<div class="layui-btn-container">
|
||||
<button class="layui-btn layui-btn-sm" lay-event="add">
|
||||
<span>+ 添加合同</span>
|
||||
<i class="layui-icon layui-icon-down layui-font-12"></i>
|
||||
</button>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const delay_num = {$delay_num|default=30};
|
||||
const contract_types = [{"id":1,"title":"普通采购"},{"id":2,"title":"物品采购"},{"id":3,"title":"服务采购"}];
|
||||
const moduleInit = ['tool','tablePlus','oaPicker','laydatePlus'];
|
||||
function gouguInit() {
|
||||
var table = layui.tablePlus,form = layui.form,dropdown = layui.dropdown,element = layui.element, tool = layui.tool,laydatePlus = layui.laydatePlus;
|
||||
|
||||
//tab切换
|
||||
element.on('tab(tab)', function(data){
|
||||
$('[name="tab"]').val(data.index);
|
||||
$("#barsearchform")[0].reset();
|
||||
let searchObject = form.val('barsearchform');
|
||||
layui.pageTable.reload({where:searchObject,page:{curr:1}});
|
||||
return false;
|
||||
});
|
||||
|
||||
//日期范围
|
||||
var sign_time = new laydatePlus({'target':'sign_time'});
|
||||
var end_time = new laydatePlus({'target':'end_time'});
|
||||
|
||||
layui.pageTable = table.render({
|
||||
elem: "#table_contract"
|
||||
,title: "采购合同列表"
|
||||
,toolbar: "#toolbarDemo"
|
||||
,url: "/contract/purchase/datalist"
|
||||
,page: true
|
||||
,limit: 20
|
||||
,cellMinWidth: 80
|
||||
,height: 'full-154'
|
||||
,autoSort: false
|
||||
,cols: [[ //表头
|
||||
{
|
||||
field: 'id',
|
||||
title: 'ID号',
|
||||
align: 'center',
|
||||
sort: true,
|
||||
width: 80
|
||||
},{ field: 'check_status', title: '审批状态', align: 'center', width: 110, templet: function (d) {
|
||||
var html = '<span class="check-status-color-' + d.check_status + '">『' + d.status_name + '』</span>';
|
||||
return html;
|
||||
}
|
||||
},{
|
||||
field: 'code',
|
||||
title: '合同编号',
|
||||
align: 'center',
|
||||
width: 150
|
||||
},{
|
||||
field: 'name',
|
||||
title: '合同名称',
|
||||
minWidth:240,
|
||||
templet: '<div><a data-href="/contract/purchase/view/id/{{d.id}}.html" class="side-a">{{d.name}}</a></div>'
|
||||
},{
|
||||
field: 'types_name',
|
||||
title: '合同性质',
|
||||
align: 'center',
|
||||
width: 80,
|
||||
templet: function (d) {
|
||||
var html = '<span class="layui-color-' + d.types + '">' + d.types_name + '</span>';
|
||||
return html;
|
||||
}
|
||||
},{
|
||||
field: 'cate_title',
|
||||
title: '合同类别',
|
||||
align: 'center',
|
||||
width: 100
|
||||
},{
|
||||
field: 'end_time',
|
||||
title: '合同有效时间',
|
||||
align: 'center',
|
||||
sort: true,
|
||||
width: 268,
|
||||
templet: function (d) {
|
||||
var html = d.interval_time;
|
||||
if (d.delay > 0 && d.delay < delay_num) {
|
||||
html += '<span class="red ml-1" style="font-size:12px;">' + d.delay + '天后到期</span>';
|
||||
}
|
||||
if (d.delay == 0) {
|
||||
html += '<span class="red ml-1" style="font-size:12px;">已过期</span>';
|
||||
}
|
||||
return html;
|
||||
}
|
||||
},{
|
||||
field: 'cost',
|
||||
title: '合同金额(元)',
|
||||
align: 'right',
|
||||
width: 100
|
||||
},{
|
||||
field: 'sign_name',
|
||||
title: '签定人',
|
||||
align: 'center',
|
||||
width: 80
|
||||
},{
|
||||
field: 'keeper_name',
|
||||
title: '保管人',
|
||||
align: 'center',
|
||||
width: 80
|
||||
},{
|
||||
field: 'sign_time',
|
||||
title: '签订日期',
|
||||
align: 'center',
|
||||
sort: true,
|
||||
width: 100
|
||||
},{
|
||||
field: 'right',
|
||||
fixed:'right',
|
||||
title: '操作',
|
||||
width: 120,
|
||||
align: 'center',
|
||||
ignoreExport:true,
|
||||
templet: function (d) {
|
||||
var html = '<div class="layui-btn-group">';
|
||||
var btn0='<span class="layui-btn layui-btn-normal layui-btn-xs" lay-event="view">详情</span>';
|
||||
var btn1='<span class="layui-btn layui-btn-xs" lay-event="edit">编辑</span>';
|
||||
var btn2='<span class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</span>';
|
||||
if(d.check_status==0 || d.check_status==4){
|
||||
return html+btn0+btn1+btn2+'</div>';
|
||||
}
|
||||
else{
|
||||
return btn0;
|
||||
}
|
||||
}
|
||||
}
|
||||
]]
|
||||
});
|
||||
|
||||
//表头工具栏事件
|
||||
table.on('toolbar(table_contract)', function(obj){
|
||||
var that = this;
|
||||
if (obj.event === 'add'){
|
||||
dropdown.render({
|
||||
elem: that,
|
||||
show: true, // 外部事件触发即显示
|
||||
data: contract_types,
|
||||
click: function(obj){
|
||||
tool.side("/contract/purchase/add?types="+obj.id);
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
});
|
||||
|
||||
table.on('tool(table_contract)',function (obj) {
|
||||
var checkStatus = table.checkStatus(obj.config.id); //获取选中行状态
|
||||
var data = obj.data;
|
||||
if (obj.event === 'view') {
|
||||
tool.side("/contract/purchase/view?id="+data.id);
|
||||
return;
|
||||
}
|
||||
if (obj.event === 'edit') {
|
||||
tool.side("/contract/purchase/add?id="+data.id);
|
||||
return;
|
||||
}
|
||||
if (obj.event === 'del') {
|
||||
layer.confirm('确定要删除该合同吗?', { icon: 3, title: '提示' }, function (index) {
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
obj.del();
|
||||
}
|
||||
}
|
||||
tool.delete("/contract/purchase/del", { id: data.id }, callback);
|
||||
layer.close(index);
|
||||
});
|
||||
return;
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,228 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<form class="layui-form p-page">
|
||||
<h3 class="pb-2">编辑采购合同</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray">合同名称<font>*</font></td>
|
||||
<td colspan="3"><input type="text" name="name" value="{$detail.name}" lay-verify="required" lay-reqText="请输入合同名称" autocomplete="off" placeholder="请输入合同名称" class="layui-input"></td>
|
||||
<td class="layui-td-gray">合同性质</td>
|
||||
<td>{$detail.types_name}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-3">签约主体(甲方)<font>*</font></td>
|
||||
<td colspan="3">
|
||||
<select name="subject_id" lay-verify="required" lay-reqText="请选择签约主体公司">
|
||||
<option value="">请选择签约主体公司</option>
|
||||
{volist name=":get_base_data('Enterprise')" id="v"}
|
||||
<option value="{$v.id}" {eq name="$v.id" value="$detail.subject_id" } selected{/eq}>{$v.title}</option>
|
||||
{/volist}
|
||||
</select>
|
||||
</td>
|
||||
<td class="layui-td-gray-2">合同始止日期<font>*</font></td>
|
||||
<td id="barDate" style="width:320px;">
|
||||
<div class="layui-input-inline" style="width:150px;">
|
||||
<input type="text" class="layui-input" id="start_time" value="{$detail.start_time}" placeholder="选择时间区间" readonly name="start_time" lay-verify="required" lay-reqText="请选择合同开始时间">
|
||||
</div>
|
||||
~
|
||||
<div class="layui-input-inline" style="width:150px;">
|
||||
<input type="text" class="layui-input" id="end_time" value="{$detail.end_time}" placeholder="选择时间区间" readonly name="end_time" lay-verify="required" lay-reqText="请选择合同结束时间">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-3">供应商名称(乙方)<font>*</font></td>
|
||||
<td colspan="3">
|
||||
{eq name="$is_supplier" value="1"}
|
||||
<input type="text" name="supplier" autocomplete="off" value="{$detail.supplier}" readonly lay-verify="required" lay-reqText="请输入供应商名称" placeholder="请输入供应商名称" class="layui-input supplier-picker">
|
||||
{else/}
|
||||
<input type="text" name="supplier" autocomplete="off" value="{$detail.supplier}" lay-verify="required" lay-reqText="请输入供应商名称" placeholder="请输入供应商名称" class="layui-input">
|
||||
{/eq}
|
||||
<input type="hidden" name="supplier_id" value="{$detail.supplier_id}">
|
||||
</td>
|
||||
<td class="layui-td-gray-3">签约供应商代表<font>*</font></td>
|
||||
<td><input type="text" name="contact_name" value="{$detail.contact_name}" autocomplete="off" lay-verify="required" lay-reqText="请输入供应商代表姓名" placeholder="请输入供应商代表姓名" class="layui-input"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-3">供应商联系地址</td>
|
||||
<td colspan="3"><input type="text" name="contact_address" value="{$detail.contact_address}" autocomplete="off" placeholder="请输入供应商联系地址" class="layui-input"></td>
|
||||
<td class="layui-td-gray-3">供应商联系电话</td>
|
||||
<td><input type="text" name="contact_mobile" value="{$detail.contact_mobile}" autocomplete="off" placeholder="请输入供应商联系电话" class="layui-input"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">合同金额<font>*</font></td>
|
||||
<td>
|
||||
{eq name="$detail.types" value="1"}
|
||||
<input type="text" name="cost" value="{$detail.cost}" lay-verify="required|number" lay-reqText="请输入合同金额,数字" placeholder="请输入合同金额,数字" autocomplete="off" class="layui-input">
|
||||
{/eq}
|
||||
{eq name="$detail.types" value="2"}
|
||||
<input type="text" name="cost" value="{$detail.cost}" lay-verify="required|number" lay-reqText="请完善产品信息" placeholder="完善产品信息,合同金额自动计算" readonly class="layui-input layui-input-readonly">
|
||||
{/eq}
|
||||
{eq name="$detail.types" value="3"}
|
||||
<input type="text" name="cost" value="{$detail.cost}" lay-verify="required|number" lay-reqText="请完善服务信息" placeholder="完善服务信息,合同金额自动计算" readonly class="layui-input layui-input-readonly">
|
||||
{/eq}
|
||||
</td>
|
||||
<td class="layui-td-gray">合同类别<font>*</font></td>
|
||||
<td>
|
||||
<select name="cate_id" lay-verify="required" lay-reqText="请选择合同类别">
|
||||
<option value="">请选择合同类别</option>
|
||||
{volist name=":get_base_data('ContractCate');" id="vo"}
|
||||
<option value="{$vo.id}" {eq name="$vo.id" value="$detail.cate_id"} selected{/eq}>{$vo.title}</option>
|
||||
{/volist}
|
||||
</select>
|
||||
</td>
|
||||
<td class="layui-td-gray">合同编号<font>*</font></td>
|
||||
<td><input type="text" name="code" value="{$detail.code}" autocomplete="off" {eq name="$is_codeno" value="1"}readonly{/eq} lay-verify="required" lay-reqText="请输入合同编号" placeholder="请输入合同编号" class="layui-input"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6"><strong>签订信息</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">合同签订人<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="sign_name" value="{$detail.sign_name}" autocomplete="off" readonly lay-verify="required" lay-reqText="请选择合同签订人" placeholder="请选择合同签订人" class="layui-input picker-diy">
|
||||
<input type="hidden" name="sign_uid" value="{$detail.sign_uid}">
|
||||
</td>
|
||||
<td class="layui-td-gray-2">合同所属部门<font>*</font></td>
|
||||
<td>
|
||||
<input type="text" name="sign_department" value="{$detail.sign_department}" autocomplete="off" readonly lay-verify="required" lay-reqText="请选择合同所属部门" placeholder="请选择合同所属部门" class="layui-input picker-oa" data-types="department">
|
||||
<input type="hidden" name="did" value="{$detail.did}">
|
||||
</td>
|
||||
<td class="layui-td-gray-2">合同签订日期<font>*</font></td>
|
||||
<td><input type="text" name="sign_time" value="{$detail.sign_time}" readonly lay-verify="required" lay-reqText="请选择合同签订日期" placeholder="请选择合同签订日期" class="layui-input tool-time"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">合同制定人</td>
|
||||
<td>
|
||||
<input type="text" name="prepared_name" value="{$detail.prepared_name}" autocomplete="off" readonly placeholder="请选择合同制定人" class="layui-input picker-admin">
|
||||
<input type="hidden" name="prepared_uid" value="{$detail.prepared_uid}">
|
||||
</td>
|
||||
<td class="layui-td-gray-2">合同保管人</td>
|
||||
<td>
|
||||
<input type="text" name="keeper_name" value="{$detail.keeper_name}" autocomplete="off" readonly placeholder="请选择合同保管人" class="layui-input picker-admin">
|
||||
<input type="hidden" name="keeper_uid" value="{$detail.keeper_uid}">
|
||||
</td>
|
||||
<td class="layui-td-gray">合同共享人员</td>
|
||||
<td colspan="3">
|
||||
<input type="text" name="share_names" value="{$detail.share_names}" autocomplete="off" readonly placeholder="请选择共享人员" class="layui-input picker-admin" data-type="2">
|
||||
<input type="hidden" name="share_ids" value="{$detail.share_ids}">
|
||||
</td>
|
||||
</tr>
|
||||
{eq name="$detail.types" value="2"}{include file="/purchase/edit_purchased"}{/eq}
|
||||
{eq name="$detail.types" value="3"}{include file="/purchase/edit_service"}{/eq}
|
||||
<tr>
|
||||
<td colspan="6"><strong>相关附件</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">
|
||||
<button type="button" class="layui-btn layui-btn-sm" id="uploadBtn"><i class="layui-icon"></i>附件上传</button>
|
||||
</td>
|
||||
<td colspan="5">
|
||||
<div class="layui-row" id="uploadBox">
|
||||
<input type="hidden" data-type="file" name="file_ids" value="{$detail.file_ids}">
|
||||
{notempty name="$detail.file_ids"}
|
||||
{volist name="$detail.file_array" id="vo"}
|
||||
<div class="layui-col-md4" id="uploadFile{$vo.id}">{:file_card($vo)}</div>
|
||||
{/volist}
|
||||
{/notempty}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6"><strong>备注信息</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6"><textarea name="remark" placeholder="请输入备注信息" class="layui-textarea">{$detail.remark|default=''}</textarea></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="pt-4">
|
||||
<input type="hidden" name="id" value="{$detail.id}">
|
||||
<input type="hidden" name="types" value="{$detail.types}">
|
||||
<input type="hidden" name="scene" value="edit">
|
||||
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">提交保存</button>
|
||||
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
|
||||
</div>
|
||||
</form>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool','oaPicker','uploadPlus'];
|
||||
function gouguInit() {
|
||||
var form = layui.form,tool=layui.tool,laydate = layui.laydate, oaPicker = layui.oaPicker,uploadPlus = layui.uploadPlus;
|
||||
if(typeof purchased_fun==='function'){
|
||||
purchased_fun(layui);
|
||||
}
|
||||
if(typeof service_fun==='function'){
|
||||
service_fun(layui);
|
||||
}
|
||||
//日期范围
|
||||
laydate.render({
|
||||
elem: '#barDate',
|
||||
range: ['#start_time', '#end_time']
|
||||
});
|
||||
//附件上传
|
||||
var attachment = new uploadPlus({
|
||||
"target":'uploadBtn',
|
||||
"targetBox":'uploadBox'
|
||||
});
|
||||
//选择员工弹窗
|
||||
$('body').on('click','.picker-diy',function () {
|
||||
let that = $(this);
|
||||
let ids=that.next().val()+'',names = that.val()+'';
|
||||
oaPicker.employeeInit({
|
||||
ids:ids,
|
||||
names:names,
|
||||
type:1,//1是单选,2是多选
|
||||
callback:function(data){
|
||||
//这里是选择后的回调方法,可以根据具体需求自定义写哦
|
||||
let select_id=[],select_name=[];
|
||||
for(var a=0; a<data.length;a++){
|
||||
select_id.push(data[a].id);
|
||||
select_name.push(data[a].name);
|
||||
}
|
||||
that.val(select_name.join(','));
|
||||
that.next().val(select_id.join(','));
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
//选择供应商弹窗
|
||||
$('body').on('click','.supplier-picker',function () {
|
||||
let that = $(this),ids = [],titles=[],contact_name=[],contact_mobile=[],address=[],map = {},types = 'supplier',type = 1;
|
||||
let callback = function(data){
|
||||
for ( var i = 0; i <data.length; i++){
|
||||
ids.push(data[i].id);
|
||||
titles.push(data[i].title);
|
||||
contact_name.push(data[i].contact_name);
|
||||
contact_mobile.push(data[i].contact_mobile);
|
||||
address.push(data[i].address);
|
||||
}
|
||||
that.val(titles.join(','));
|
||||
that.next().val(ids.join(','));
|
||||
$('[name="contact_name"]').val(contact_name.join(','));
|
||||
$('[name="contact_mobile"]').val(contact_mobile.join(','));
|
||||
$('[name="contact_address"]').val(address.join(','));
|
||||
}
|
||||
oaPicker.picker(types,type,callback,map);
|
||||
});
|
||||
|
||||
//监听提交
|
||||
form.on('submit(webform)', function (data) {
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
tool.sideClose(1000);
|
||||
}
|
||||
}
|
||||
let clickbtn = $(this);
|
||||
tool.post("/contract/purchase/add", data.field, callback,clickbtn);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,135 @@
|
||||
<tr>
|
||||
<td colspan="6"><strong>物品信息</strong> <span class="layui-btn layui-btn-sm" type="button" id="purchasedAdd">+ 添加物品</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<table id="purchasedTable" class="layui-table layui-table-min" style="margin:0">
|
||||
<tr>
|
||||
<th width="200">物品名称</th>
|
||||
<th width="100">单位</th>
|
||||
<th width="100">规格</th>
|
||||
<th width="100">采购单价</th>
|
||||
<th width="100">数量</th>
|
||||
<th width="100">小计</th>
|
||||
<th>备注信息</th>
|
||||
<th width="60">操作</th>
|
||||
</tr>
|
||||
{empty name="$detail.content_array"}
|
||||
<tr class="purchased-tr">
|
||||
{eq name="is_purchased" value="1"}
|
||||
<td><input type="text" name="purchased_title[]" value="" class="layui-input purchased-picker" readonly lay-verify="required" lay-reqText="请输入物品名称"><input type="hidden" name="purchased_id[]" value="0"></td>
|
||||
{else/}
|
||||
<td><input type="text" name="purchased_title[]" value="" class="layui-input" lay-verify="required" lay-reqText="请输入物品名称"><input type="hidden" name="purchased_id[]" value="0"></td>
|
||||
{/eq}
|
||||
<td><input type="text" name="purchased_unit[]" value="" class="layui-input" lay-verify="required" lay-reqText="请输入单位"></td>
|
||||
<td><input type="text" name="purchased_specs[]" value="" class="layui-input" lay-verify="required" lay-reqText="请输入物品规格"></td>
|
||||
<td><input type="text" name="purchased_price[]" value="0.00" class="layui-input input-num" lay-verify="required|number" lay-reqText="请输入采购单价"></td>
|
||||
<td><input type="text" name="purchased_num[]" value="1" class="layui-input input-num" lay-verify="required|number" lay-reqText="请输入物品数量"></td>
|
||||
<td><input type="text" name="purchased_subtotal[]" value="0.00" class="layui-input layui-input-readonly" readonly></td>
|
||||
<td><input type="text" name="purchased_remark[]" value="" class="layui-input"></td>
|
||||
<td><a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a></td>
|
||||
</tr>
|
||||
{else/}
|
||||
{volist name="$detail.content_array" id="vo"}
|
||||
<tr class="purchased-tr">
|
||||
{eq name="is_purchased" value="1"}
|
||||
<td><input type="text" name="purchased_title[]" value="{$vo.purchased_title|default=''}" class="layui-input purchased-picker" readonly lay-verify="required" lay-reqText="请输入物品名称"><input type="hidden" name="purchased_id[]" value="{$vo.purchased_id|default=0}"></td>
|
||||
{else/}
|
||||
<td><input type="text" name="purchased_title[]" value="{$vo.purchased_title|default=''}" class="layui-input" lay-verify="required" lay-reqText="请输入物品名称"><input type="hidden" name="purchased_id[]" value="{$vo.purchased_id|default=0}"></td>
|
||||
{/eq}
|
||||
<td><input type="text" name="purchased_unit[]" value="{$vo.purchased_unit|default=''}" class="layui-input" lay-verify="required" lay-reqText="请输入单位"></td>
|
||||
<td><input type="text" name="purchased_specs[]" value="{$vo.purchased_specs|default=''}" class="layui-input" lay-verify="required" lay-reqText="请输入物品规格"></td>
|
||||
<td><input type="text" name="purchased_price[]" value="{$vo.purchased_price|default='0.00'}" class="layui-input input-num" lay-verify="required|number" lay-reqText="请输入采购单价"></td>
|
||||
<td><input type="text" name="purchased_num[]" value="{$vo.purchased_num|default=0}" class="layui-input input-num" lay-verify="required|number" lay-reqText="请输入物品数量"></td>
|
||||
<td><input type="text" name="purchased_subtotal[]" value="{$vo.purchased_subtotal|default='0.00'}" class="layui-input layui-input-readonly" readonly></td>
|
||||
<td><input type="text" name="purchased_remark[]" value="{$vo.purchased_remark|default=''}" class="layui-input"></td>
|
||||
<td><a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a></td>
|
||||
</tr>
|
||||
{/volist}
|
||||
{/empty}
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<script>
|
||||
const is_purchased={$is_purchased};
|
||||
function purchased_fun(layui){
|
||||
let form = layui.form,oaPicker = layui.oaPicker;
|
||||
|
||||
//选择物品弹窗
|
||||
$('body').on('click','.purchased-picker',function () {
|
||||
let that = $(this),ids = [],titles=[],purchase_price=[],unit=[],specs=[],map = {},types = 'purchased',type = 1;
|
||||
let callback = function(data){
|
||||
for ( var i = 0; i <data.length; i++){
|
||||
ids.push(data[i].id);
|
||||
titles.push(data[i].title);
|
||||
unit.push(data[i].unit);
|
||||
specs.push(data[i].specs);
|
||||
purchase_price.push(data[i].purchase_price);
|
||||
}
|
||||
that.val(titles.join(','));
|
||||
that.next().val(ids.join(','));
|
||||
that.parents('.purchased-tr').find('input').eq(2).val(unit.join(','));
|
||||
that.parents('.purchased-tr').find('input').eq(3).val(specs.join(','));
|
||||
that.parents('.purchased-tr').find('input').eq(4).val(purchase_price.join(','));
|
||||
that.parents('.purchased-tr').find('input').eq(6).val(purchase_price.join(','));
|
||||
count_cost();
|
||||
}
|
||||
oaPicker.picker(types,type,callback,map);
|
||||
});
|
||||
|
||||
//添加物品信息表格
|
||||
$('#purchasedAdd').on('click',function(){
|
||||
var html = '',purchased_title=' class="layui-input"';
|
||||
if(is_purchased==1){
|
||||
purchased_title=' class="layui-input purchased-picker" readonly';
|
||||
}
|
||||
html += '<tr class="purchased-tr">\
|
||||
<td><input type="text" name="purchased_title[]" value="" '+purchased_title+' lay-verify="required" lay-reqText="请输入物品名称"><input type="hidden" name="purchased_id[]" value="0"></td>\
|
||||
<td><input type="text" name="purchased_unit[]" value="" class="layui-input" lay-verify="required" lay-reqText="请输入单位"></td>\
|
||||
<td><input type="text" name="purchased_specs[]" value="" class="layui-input" lay-verify="required" lay-reqText="请输入物品规格"></td>\
|
||||
<td><input type="text" name="purchased_price[]" value="0.00" class="layui-input input-num" lay-verify="required|number" lay-reqText="请输入采购单价"></td>\
|
||||
<td><input type="text" name="purchased_num[]" value="1" class="layui-input input-num" lay-verify="required|number" lay-reqText="请输入物品数量"></td>\
|
||||
<td><input type="text" name="purchased_subtotal[]" value="0.00" class="layui-input layui-input-readonly" readonly></td>\
|
||||
<td><input type="text" name="purchased_remark[]" value="" class="layui-input"></td>\
|
||||
<td><a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a></td>\
|
||||
</tr>';
|
||||
$('#purchasedTable').append(html).find('.tr-none').remove();
|
||||
form.render();
|
||||
});
|
||||
|
||||
$('#purchasedTable').on('click', '[lay-event="del"]', function() {
|
||||
if($('.purchased-tr').length<2){
|
||||
layer.msg('至少保留一个物品选项');
|
||||
return false;
|
||||
}
|
||||
$(this).parents('.purchased-tr').remove();
|
||||
count_cost();
|
||||
});
|
||||
|
||||
//计算价格
|
||||
$('#purchasedTable').on('input', '.input-num', function() {
|
||||
var inputs = $(this).parents('.purchased-tr').find("input");
|
||||
var purchased_price = inputs.eq(4).val();
|
||||
var purchased_num = inputs.eq(5).val();
|
||||
var purchased_amount = (purchased_price*purchased_num).toFixed(2);
|
||||
if(isNaN(purchased_amount)){
|
||||
purchased_amount = 0.00;
|
||||
}
|
||||
inputs.eq(6).val(purchased_amount);
|
||||
count_cost();
|
||||
});
|
||||
|
||||
//计算总价
|
||||
function count_cost(){
|
||||
var purchased_subtotal = $('#purchasedTable').find('[name="purchased_subtotal[]"]');
|
||||
var total = 0;
|
||||
for (var m = 0; m < purchased_subtotal.length; m++) {
|
||||
total+=$(purchased_subtotal[m]).val()*1000;
|
||||
}
|
||||
if(isNaN(total)){
|
||||
total = 0;
|
||||
}
|
||||
$('[name="cost"]').val((total/1000).toFixed(2));
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,96 @@
|
||||
<tr>
|
||||
<td class="layui-td-gray" colspan="6" style="text-align:left; color:#666"><strong>服务信息</strong> <span class="layui-btn layui-btn-sm" type="button" id="serviceAdd">+ 添加服务</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<table id="serviceTable" class="layui-table layui-table-min" style="margin:0">
|
||||
<tr>
|
||||
<th width="200">服务名称</th>
|
||||
<th width="200">服务周期</th>
|
||||
<th width="100">服务单价</th>
|
||||
<th width="100">服务次数</th>
|
||||
<th width="100">小计</th>
|
||||
<th>备注信息</th>
|
||||
<th width="60">操作</th>
|
||||
</tr>
|
||||
{empty name="$detail.content_array"}
|
||||
<tr class="service-tr">
|
||||
<td><input type="text" name="service_title[]" value="" class="layui-input" lay-verify="required" lay-reqText="请输入服务名称"></td>
|
||||
<td><input type="text" name="service_date[]" value="" class="layui-input layui-input-readonly tool-time" data-range="到" lay-verify="required" lay-reqText="请选择服务周期" readonly></td>
|
||||
<td><input type="text" name="service_price[]" value="0.00" class="layui-input input-num" lay-verify="required|number" lay-reqText="请输入服务单价"></td>
|
||||
<td><input type="text" name="service_num[]" value="1" class="layui-input input-num" lay-verify="required|number" lay-reqText="请输入服务次数"></td>
|
||||
<td><input type="text" name="service_subtotal[]" value="0.00" class="layui-input layui-input-readonly" readonly></td>
|
||||
<td><input type="text" name="service_remark[]" value="" class="layui-input"></td>
|
||||
<td><a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a></td>
|
||||
</tr>
|
||||
{else/}
|
||||
{volist name="$detail.content_array" id="vo"}
|
||||
<tr class="service-tr">
|
||||
<td><input type="text" name="service_title[]" value="{$vo.service_title|default=''}" class="layui-input" lay-verify="required" lay-reqText="请输入服务名称"></td>
|
||||
<td><input type="text" name="service_date[]" value="{$vo.service_date|default=''}" class="layui-input layui-input-readonly tool-time" data-range="到" lay-verify="required" lay-reqText="请选择服务周期" readonly></td>
|
||||
<td><input type="text" name="service_price[]" value="{$vo.service_price|default='0.00'}" class="layui-input input-num" lay-verify="required|number" lay-reqText="请输入服务单价"></td>
|
||||
<td><input type="text" name="service_num[]" value="{$vo.service_num|default=0}" class="layui-input input-num" lay-verify="required|number" lay-reqText="请输入服务次数"></td>
|
||||
<td><input type="text" name="service_subtotal[]" value="{$vo.service_subtotal|default='0.00'}" class="layui-input layui-input-readonly" readonly></td>
|
||||
<td><input type="text" name="service_remark[]" value="{$vo.service_remark|default=''}" class="layui-input"></td>
|
||||
<td><a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a></td>
|
||||
</tr>
|
||||
{/volist}
|
||||
{/empty}
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<script>
|
||||
function service_fun(layui){
|
||||
let form = layui.form;
|
||||
//添加服务信息表格
|
||||
$('#serviceAdd').on('click',function(){
|
||||
var html = '';
|
||||
html += '<tr class="service-tr">\
|
||||
<td><input type="text" name="service_title[]" value="" class="layui-input" lay-verify="required" lay-reqText="请输入服务名称"></td>\
|
||||
<td><input type="text" name="service_date[]" value="" class="layui-input layui-input-readonly tool-time" data-range="到" lay-verify="required" lay-reqText="请选择服务周期" readonly></td>\
|
||||
<td><input type="text" name="service_price[]" value="0.00" class="layui-input input-num" lay-verify="required|number" lay-reqText="请输入服务单价"></td>\
|
||||
<td><input type="text" name="service_num[]" value="1" class="layui-input input-num" lay-verify="required|number" lay-reqText="请输入服务次数"></td>\
|
||||
<td><input type="text" name="service_subtotal[]" value="0.00" class="layui-input layui-input-readonly" readonly></td>\
|
||||
<td><input type="text" name="service_remark[]" value="" class="layui-input"></td>\
|
||||
<td><a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a></td>\
|
||||
</tr>';
|
||||
$('#serviceTable').append(html).find('.tr-none').remove();
|
||||
form.render();
|
||||
});
|
||||
|
||||
$('#serviceTable').on('click', '[lay-event="del"]', function() {
|
||||
if($('.service-tr').length<2){
|
||||
layer.msg('至少保留一个服务选项');
|
||||
return false;
|
||||
}
|
||||
$(this).parents('.service-tr').remove();
|
||||
count_cost();
|
||||
});
|
||||
|
||||
//计算价格
|
||||
$('#serviceTable').on('input', '.input-num', function() {
|
||||
var inputs = $(this).parents('.service-tr').find("input");
|
||||
var service_price = inputs.eq(2).val();
|
||||
var service_num = inputs.eq(3).val();
|
||||
var service_amount = (service_price*service_num).toFixed(2);
|
||||
if(isNaN(service_amount)){
|
||||
service_amount = 0.00;
|
||||
}
|
||||
inputs.eq(4).val(service_amount);
|
||||
count_cost();
|
||||
});
|
||||
|
||||
//计算总价
|
||||
function count_cost(){
|
||||
var service_subtotal = $('#serviceTable').find('[name="service_subtotal[]"]');
|
||||
var total = 0;
|
||||
for (var m = 0; m < service_subtotal.length; m++) {
|
||||
total+=$(service_subtotal[m]).val()*1000;
|
||||
}
|
||||
if(isNaN(total)){
|
||||
total = 0;
|
||||
}
|
||||
$('[name="cost"]').val((total/1000).toFixed(2));
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,177 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
|
||||
<div class="p-page">
|
||||
<div class="layui-card border-x border-t" style="margin-bottom:0; box-shadow:0 0 0 0 rgb(5 32 96 / 0%)">
|
||||
<div class="body-table layui-tab layui-tab-brief" lay-filter="tab">
|
||||
<ul class="layui-tab-title">
|
||||
<li><a href="/contract/contract/stoplist">销售合同</a></li>
|
||||
<li class="layui-this"><a href="/contract/purchase/stoplist">采购合同</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<form class="layui-form gg-form-bar border-x">
|
||||
<div class="layui-input-inline" style="width:122px;">
|
||||
<select name="types">
|
||||
<option value="">选择合同性质</option>
|
||||
<option value="1">普通采购</option>
|
||||
<option value="2">物品采购</option>
|
||||
<option value="3">服务采购</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:122px;">
|
||||
<select name="cate_id">
|
||||
<option value="">选择合同类别</option>
|
||||
{volist name=":get_base_data('ContractCate');" id="vo"}
|
||||
<option value="{$vo.id}">{$vo.title}</option>
|
||||
{/volist}
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:175px;">
|
||||
<input type="text" class="layui-input" id="sign_time" placeholder="选择合同签订日期" readonly name="sign_time">
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:175px;">
|
||||
<input type="text" class="layui-input" id="end_time" placeholder="选择合同到期日期" readonly name="end_time">
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:220px;">
|
||||
<input type="text" name="keywords" placeholder="输入关键字,合同编号/合同名称" class="layui-input" autocomplete="off" />
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:150px">
|
||||
<input type="hidden" name="tab" value="0" />
|
||||
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="table-search"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
|
||||
<button type="reset" class="layui-btn layui-btn-reset" lay-filter="table-reset">清空</button>
|
||||
</div>
|
||||
</form>
|
||||
<table class="layui-hide" id="table_contract" lay-filter="table_contract"></table>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<div class="layui-btn-container">
|
||||
<h3>中止合同</h3>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool','tablePlus','laydatePlus'];
|
||||
function gouguInit() {
|
||||
var table = layui.tablePlus,dropdown = layui.dropdown, tool = layui.tool,laydatePlus = layui.laydatePlus;
|
||||
//日期范围
|
||||
var sign_time = new laydatePlus({'target':'sign_time'});
|
||||
var end_time = new laydatePlus({'target':'end_time'});
|
||||
layui.pageTable = table.render({
|
||||
elem: "#table_contract"
|
||||
, toolbar: "#toolbarDemo"
|
||||
,url: "/contract/purchase/stoplist"
|
||||
,is_excel: true
|
||||
,page: true
|
||||
,limit: 20
|
||||
,cellMinWidth: 60
|
||||
,height: 'full-154'
|
||||
,cols: [[ //表头
|
||||
{
|
||||
field: 'id',
|
||||
title: 'ID号',
|
||||
align: 'center',
|
||||
width: 80
|
||||
},{
|
||||
field: 'code',
|
||||
title: '合同编号',
|
||||
align: 'center',
|
||||
width: 150
|
||||
},{
|
||||
field: 'name',
|
||||
title: '合同名称',
|
||||
minWidth:240,
|
||||
templet: '<div><a data-href="/contract/purchase/view/id/{{d.id}}.html" class="side-a">{{d.name}}</a></div>'
|
||||
},{
|
||||
field: 'cate_title',
|
||||
title: '合同类别',
|
||||
align: 'center',
|
||||
width: 100
|
||||
},{
|
||||
field: 'types_name',
|
||||
title: '合同性质',
|
||||
align: 'center',
|
||||
width: 80,
|
||||
templet: function (d) {
|
||||
var html = '<span class="layui-color-' + d.types + '">' + d.types_name + '</span>';
|
||||
return html;
|
||||
}
|
||||
},{
|
||||
field: 'interval_time',
|
||||
title: '合同有效时间',
|
||||
align: 'center',
|
||||
width: 268,
|
||||
templet: function (d) {
|
||||
var html = d.interval_time;
|
||||
if (d.delay > 0 && d.delay < 30) {
|
||||
html += '<span class="red ml-1" style="font-size:12px;">' + d.delay + '天后到期</span>';
|
||||
}
|
||||
if (d.delay == 0) {
|
||||
html += '<span class="red ml-1" style="font-size:12px;">已过期</span>';
|
||||
}
|
||||
return html;
|
||||
}
|
||||
},{
|
||||
field: 'cost',
|
||||
title: '合同金额(元)',
|
||||
align: 'right',
|
||||
width: 100
|
||||
},{
|
||||
field: 'stop_name',
|
||||
title: '中止人',
|
||||
align: 'center',
|
||||
width: 80
|
||||
},{
|
||||
field: 'stop_time',
|
||||
title: '中止日期',
|
||||
align: 'center',
|
||||
width: 90
|
||||
},{
|
||||
field: 'sign_name',
|
||||
title: '签定人',
|
||||
align: 'center',
|
||||
width: 80
|
||||
},{
|
||||
field: 'sign_time',
|
||||
title: '签订日期',
|
||||
align: 'center',
|
||||
width: 90
|
||||
},{
|
||||
field: 'keeper_name',
|
||||
title: '保管人',
|
||||
align: 'center',
|
||||
width: 80
|
||||
},{
|
||||
field: 'right',
|
||||
fixed:'right',
|
||||
title: '操作',
|
||||
width: 60,
|
||||
align: 'center',
|
||||
ignoreExport:true,
|
||||
templet: function (d) {
|
||||
var btn0='<span class="layui-btn layui-btn-normal layui-btn-xs" lay-event="view">详情</span>';
|
||||
return btn0;
|
||||
}
|
||||
}
|
||||
]]
|
||||
});
|
||||
|
||||
table.on('tool(table_contract)',function (obj) {
|
||||
var checkStatus = table.checkStatus(obj.config.id); //获取选中行状态
|
||||
var data = obj.data;
|
||||
if (obj.event === 'view') {
|
||||
tool.side("/contract/purchase/view?id="+data.id);
|
||||
return;
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,441 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
{block name="style"}
|
||||
<style>
|
||||
.layui-tab-title .layui-this{background-color:#fff;}
|
||||
.layui-tab-card,.layui-card{box-shadow:0 0 0 0 rgb(0 0 0 / 10%); border-radius:0; border-top:none;}
|
||||
#checkBox .pb-2{display:none;}
|
||||
</style>
|
||||
{/block}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
<div class="p-page">
|
||||
<h3 class="pb-2">采购合同详情</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray">合同名称</td>
|
||||
<td colspan="3">{$detail.name}</td>
|
||||
<td class="layui-td-gray">合同编号</td>
|
||||
<td>{$detail.code}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-3">签约主体(甲方)</td>
|
||||
<td colspan="3">{$detail.subject_title}</td>
|
||||
<td class="layui-td-gray-2">合同始止日期</td>
|
||||
<td>{$detail.start_time} 至 {$detail.end_time}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-3">供应商名称(乙方)</td>
|
||||
<td colspan="3">{$detail.supplier}</td>
|
||||
<td class="layui-td-gray-3">签约供应商代表</td>
|
||||
<td>{$detail.contact_name}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-3">供应商联系地址</td>
|
||||
<td colspan="3">{$detail.contact_address|default='-'}</td>
|
||||
<td class="layui-td-gray">供应商联系电话</td>
|
||||
<td>{$detail.contact_mobile|default='-'}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">合同金额</td>
|
||||
<td>{$detail.cost}</td>
|
||||
<td class="layui-td-gray">合同性质</td>
|
||||
<td>{$detail.types_name}</td>
|
||||
<td class="layui-td-gray">合同类别</td>
|
||||
<td>{$detail.cate_title}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6"><strong>签订信息</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">合同签订人</td>
|
||||
<td>{$detail.sign_name}</td>
|
||||
<td class="layui-td-gray-2">合同所属部门</td>
|
||||
<td>{$detail.sign_department}</td>
|
||||
<td class="layui-td-gray-2">合同签订日期</td>
|
||||
<td>{$detail.sign_time}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">合同制定人</td>
|
||||
<td>{$detail.prepared_name|default='-'}</td>
|
||||
<td class="layui-td-gray-2">合同保管人</td>
|
||||
<td>{$detail.keeper_name|default='-'} <span id="keeper" data-ids="{$detail.keeper_uid}" data-names="{$detail.keeper_name}" class="layui-btn layui-btn-xs layui-btn-normal ml-1">更改</span></td>
|
||||
<td class="layui-td-gray">合同共享人员</td>
|
||||
<td colspan="3">{$detail.share_names|default='-'} <span id="shares" data-ids="{$detail.share_ids}" data-names="{$detail.share_names}" class="layui-btn layui-btn-xs layui-btn-normal ml-1">更改</span></td>
|
||||
</tr>
|
||||
{eq name="$detail.types" value="2"}{include file="/purchase/view_purchased"}{/eq}
|
||||
{eq name="$detail.types" value="3"}{include file="/purchase/view_service"}{/eq}
|
||||
{notempty name="$detail.file_ids"}
|
||||
<tr>
|
||||
<td colspan="6"><strong>相关附件</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<div class="layui-row">
|
||||
{volist name="$detail.file_array" id="vo"}
|
||||
<div class="layui-col-md4">{:file_card($vo,'view')}</div>
|
||||
{/volist}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{/notempty}
|
||||
{notempty name="$detail.remark"}
|
||||
<tr>
|
||||
<td colspan="6"><strong>备注信息</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">{$detail.remark}</td>
|
||||
</tr>
|
||||
{/notempty}
|
||||
|
||||
{notempty name="$detail.ticket"}
|
||||
<tr>
|
||||
<td colspan="6"><strong>申请收票记录</strong>『 已申请收票金额:<strong class="green">{$detail.has_ticket}</strong> 元,未申请收票金额:<strong class="red">{$detail.no_ticket}</strong> 元 』</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<table class="layui-table layui-table-min" style="margin:0;">
|
||||
<tr>
|
||||
<th style="width:60px;">序号</th>
|
||||
<th style="width:150px;">发票金额(元)</th>
|
||||
<th style="width:150px;">发票状态</th>
|
||||
<th style="width:200px;">发票号码</th>
|
||||
<th style="width:150px;">发票日期</th>
|
||||
<th style="width:100px;">付款状态</th>
|
||||
<th style="width:100px;">申请人</th>
|
||||
<th style="width:150px;">申请时间</th>
|
||||
<th style="width:60px;">操作</th>
|
||||
</tr>
|
||||
{volist name="$detail.ticket" id="vo"}
|
||||
<tr>
|
||||
<td>{$vo.id}</td>
|
||||
<td><span class="green">{$vo.amount}</span></td>
|
||||
{eq name="$vo.open_status" value="1"}
|
||||
<td><span class="green">已开具</span></td>
|
||||
<td>{$vo.code}</td>
|
||||
<td>{$vo.open_time|date='Y-m-d'}</td>
|
||||
{else/}
|
||||
<td><span class="red">未开具</span></td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
{/eq}
|
||||
<td>
|
||||
{eq name="$vo.pay_status" value="0"}<span class="red">未付款</span>{/eq}
|
||||
{eq name="$vo.pay_status" value="1"}<span class="blue">部分付款</span>{/eq}
|
||||
{eq name="$vo.pay_status" value="2"}<span class="green">全部付款</span>{/eq}
|
||||
</td>
|
||||
<td>{$vo.admin}</td>
|
||||
<td>{$vo.create_time | date='Y-m-d H:i:s'}</td>
|
||||
<td><span class="layui-btn layui-btn-normal layui-btn-xs side-a" data-href="/finance/ticket/view?id={$vo.id}">详情</span></td>
|
||||
</tr>
|
||||
{/volist}
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
{/notempty}
|
||||
|
||||
{notempty name="$detail.payment"}
|
||||
<tr>
|
||||
<td colspan="6"><strong>付款记录</strong>『 已付款金额:<strong class="green">{$detail.has_payment}</strong> 元,未付款金额:<strong class="red">{$detail.no_payment}</strong> 元 』</</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<table class="layui-table layui-table-min" style="margin:0;">
|
||||
<tr>
|
||||
<th style="width:60px;">序号</th>
|
||||
<th style="width:150px;">付款金额(元)</th>
|
||||
<th style="width:200px;">付款日期</th>
|
||||
<th style="width:100px;">付款操作人</th>
|
||||
<th style="width:150px;">操作时间</th>
|
||||
<th style="width:60px;">操作</th>
|
||||
</tr>
|
||||
{volist name="$detail.payment" id="vo"}
|
||||
<tr>
|
||||
<td>{$vo.id}</td>
|
||||
<td><span class="green">{$vo.amount}</span></td>
|
||||
<td>{$vo.pay_time | date='Y-m-d'}</td>
|
||||
<td>{$vo.admin}</td>
|
||||
<td>{$vo.create_time | date='Y-m-d H:i:s'}</td>
|
||||
<td><span class="layui-btn layui-btn-normal layui-btn-xs side-a" data-href="/finance/payment/view?id={$vo.ticket_id}">详情</span></td>
|
||||
</tr>
|
||||
{/volist}
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
{/notempty}
|
||||
|
||||
<tr>
|
||||
<td colspan="6"><strong>合同情况</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">录入人</td>
|
||||
<td>{$detail.admin_name} </td>
|
||||
<td class="layui-td-gray">录入时间</td>
|
||||
<td colspan="3">{$detail.create_time}</td>
|
||||
</tr>
|
||||
{gt name="$detail.archive_time" value="0"}
|
||||
<tr>
|
||||
<td class="layui-td-gray">归档状态</td>
|
||||
<td>
|
||||
<span class="red">已归档</span>
|
||||
{if ($auth == 1) }
|
||||
<span class="layui-btn layui-btn-danger layui-btn-xs ml-4" data-event="archive" data-status="0">反确认归档</span>
|
||||
{/if}
|
||||
</td>
|
||||
<td class="layui-td-gray">归档人</td>
|
||||
<td>{$detail.archive_name} </td>
|
||||
<td class="layui-td-gray">归档时间</td>
|
||||
<td>{$detail.archive_time|date='Y-m-d H:i:s'}</td>
|
||||
{else/}
|
||||
<td class="layui-td-gray">归档状态</td>
|
||||
<td colspan="5">
|
||||
<span class="green">未归档</span>
|
||||
{if ($auth == 1) AND ($detail.check_status == 2) }
|
||||
<span class="layui-btn layui-btn-xs ml-4" data-event="archive" data-status="1">确认归档</span>
|
||||
{/if}
|
||||
</td>
|
||||
</tr>
|
||||
{/gt}
|
||||
|
||||
{gt name="$detail.stop_time" value="0"}
|
||||
<tr>
|
||||
<td class="layui-td-gray">中止人</td>
|
||||
<td>{$detail.stop_name}</td>
|
||||
<td class="layui-td-gray">中止时间</td>
|
||||
<td>{$detail.stop_time|date='Y-m-d H:i:s'}</td>
|
||||
<td colspan="2"><span class="layui-btn layui-btn-danger layui-btn-xs" data-event="stop" data-status="0">反中止合同</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">中止备注</td>
|
||||
<td colspan="5">{$detail.stop_remark|default='-'}</td>
|
||||
</tr>
|
||||
{/gt}
|
||||
|
||||
{gt name="$detail.void_time" value="0"}
|
||||
<tr>
|
||||
<td class="layui-td-gray">作废人</td>
|
||||
<td>{$detail.void_name}</td>
|
||||
<td class="layui-td-gray">作废时间</td>
|
||||
<td>{$detail.void_time|date='Y-m-d H:i:s'}</td>
|
||||
<td colspan="2"><span class="layui-btn layui-btn-danger layui-btn-xs" data-event="void" data-status="0">反作废合同</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">作废备注</td>
|
||||
<td colspan="5">{$detail.void_remark|default='-'}</td>
|
||||
</tr>
|
||||
{/gt}
|
||||
|
||||
<tr>
|
||||
<td class="layui-td-gray">
|
||||
<div>盖章合同文件</div>
|
||||
<div><button type="button" class="layui-btn layui-btn-xs" id="uploadBtn">文件上传</button></div>
|
||||
</td>
|
||||
<td colspan="5">
|
||||
<div class="row" id="uploadBox">
|
||||
<input type="hidden" data-type="file" name="seal_ids" value="{$detail.seal_ids|default=''}">
|
||||
{volist name="$detail.seal_array" id="vo"}
|
||||
<div class="layui-col-md4" id="file_{$vo.id}">{:file_card($vo)}</div>
|
||||
{/volist}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="layui-tab layui-tab-card" style="margin:0; background-color:#fff;" lay-filter="purchase" id="purchaseTab">
|
||||
<ul class="layui-tab-title">
|
||||
<li class="layui-this" data-load="true">审批信息</li>
|
||||
<li>操作记录</li>
|
||||
</ul>
|
||||
<div class="layui-tab-content" style="padding:0;">
|
||||
<div class="layui-tab-item layui-show" style="padding-top:12px; background-color:#fff;">
|
||||
{if ($detail.stop_time == 0) AND ($detail.void_time == 0) }
|
||||
<div id="checkBox" data-status="{$detail.check_status}" data-id="{$detail.id}" data-checkflowid="{$detail.check_flow_id}" class="px-3 pb-3"></div>
|
||||
{/if}
|
||||
</div>
|
||||
<div class="layui-tab-item">
|
||||
{include file="/purchase/view_log" /}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
var purchase_id = {$detail.id};
|
||||
var auth = {$auth};
|
||||
var archive = {$detail.archive_time};
|
||||
var moduleInit = ['tool','oaCheck','oaPicker','oaEdit','uploadPlus'];
|
||||
let checking_btn='<span class="layui-btn layui-btn-warm" data-event="stop" data-status="1">中止合同</span><span class="layui-btn layui-btn-danger" data-event="void" data-status="1">作废合同</span>';
|
||||
function gouguInit() {
|
||||
var tool = layui.tool,element = layui.element,oaCheck=layui.oaCheck,oaPicker=layui.oaPicker,uploadPlus=layui.uploadPlus;
|
||||
|
||||
var attachment = new uploadPlus({
|
||||
"attachment":{
|
||||
"uidDelete":true,//是否开启只有上传人自己才能删除自己的附件
|
||||
"ajaxSave":function(res){
|
||||
$.ajax({
|
||||
url: "/contract/api/purchase_seal_ids",
|
||||
type:'post',
|
||||
data:{
|
||||
'id':purchase_id,
|
||||
'seal_ids':res,
|
||||
},
|
||||
success: function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
setTimeout(function(){
|
||||
location.reload();
|
||||
},1000)
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
"ajaxDelete":function(res){
|
||||
$.ajax({
|
||||
url: "/contract/api/purchase_seal_ids",
|
||||
type:'post',
|
||||
data:{
|
||||
'id':purchase_id,
|
||||
'seal_ids':res,
|
||||
},
|
||||
success: function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
setTimeout(function(){
|
||||
location.reload();
|
||||
},1000)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
element.on('tab(purchase)', function(data){
|
||||
let index = data.index;
|
||||
if(index == 1){
|
||||
log();
|
||||
}
|
||||
});
|
||||
|
||||
oaCheck.init({
|
||||
check_name:'purchase',
|
||||
checking_btn:checking_btn,
|
||||
check_reversed :function(){
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
let eventCallback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
parent.layui.pageTable.reload();
|
||||
setTimeout(function(){
|
||||
location.reload();
|
||||
},1200)
|
||||
}
|
||||
|
||||
//选择合同保管人弹窗
|
||||
$('body').on('click','#keeper',function () {
|
||||
let that = $(this);
|
||||
let ids=$(this).data('ids')+'',names = $(this).data('names')+'';
|
||||
oaPicker.employeeInit({
|
||||
ids:ids,
|
||||
names:names,
|
||||
type:1,//1是单选,2是多选
|
||||
callback:function(data){
|
||||
let select_id=[],select_name=[];
|
||||
for(var a=0; a<data.length;a++){
|
||||
select_id.push(data[a].id);
|
||||
select_name.push(data[a].name);
|
||||
}
|
||||
tool.post("/contract/purchase/add", {'id':purchase_id,'keeper_uid':select_id.join(','),'scene':'change'}, eventCallback);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
//选择共享成员弹窗
|
||||
$('body').on('click','#shares',function () {
|
||||
let that = $(this);
|
||||
let ids=$(this).data('ids')+'',names = $(this).data('names')+'';
|
||||
oaPicker.employeeInit({
|
||||
ids:ids,
|
||||
names:names,
|
||||
type:2,//1是单选,2是多选
|
||||
callback:function(data){
|
||||
let select_id=[],select_name=[];
|
||||
for(var a=0; a<data.length;a++){
|
||||
select_id.push(data[a].id);
|
||||
select_name.push(data[a].name);
|
||||
}
|
||||
tool.post("/contract/purchase/add", {'id':purchase_id,'share_ids':select_id.join(','),'scene':'change'}, eventCallback);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
//归档操作
|
||||
$('body').on('click','[data-event="archive"]',function(){
|
||||
let status = $(this).data('status');
|
||||
let tips = '合同归档后将不能进行任何数据操作,确定要提交归档?';
|
||||
if(status==0){
|
||||
tips = '确定要反归档操作?';
|
||||
}
|
||||
layer.confirm(tips, {
|
||||
icon: 3,
|
||||
title: '提示'
|
||||
}, function(index) {
|
||||
tool.post("/contract/api/purchase_archive", {id: purchase_id,archive_status:status}, eventCallback);
|
||||
layer.close(index);
|
||||
});
|
||||
})
|
||||
|
||||
//中止操作
|
||||
$('body').on('click','[data-event="stop"]',function(){
|
||||
let status = $(this).data('status');
|
||||
if(status==1){
|
||||
layer.prompt({
|
||||
formType: 2,
|
||||
title: '请输入中止的理由',
|
||||
area: ['480px', '120px']
|
||||
}, function(value, index, elem){
|
||||
tool.post("/contract/api/purchase_stop", {id: purchase_id,stop_status:status,stop_remark:value}, eventCallback);
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
else{
|
||||
layer.confirm('确定要反中止该合同?', {
|
||||
icon: 3,
|
||||
title: '提示'
|
||||
}, function(index) {
|
||||
tool.post("/contract/api/purchase_stop", {id: purchase_id,stop_status:status}, eventCallback);
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
})
|
||||
|
||||
//作废操作
|
||||
$('body').on('click','[data-event="void"]',function(){
|
||||
let status = $(this).data('status');
|
||||
if(status==1){
|
||||
layer.prompt({
|
||||
formType: 2,
|
||||
title: '请输入作废的理由',
|
||||
area: ['480px', '120px']
|
||||
}, function(value, index, elem){
|
||||
tool.post("/contract/api/purchase_tovoid", {id: purchase_id,void_status:status,void_remark:value}, eventCallback);
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
else{
|
||||
layer.confirm('确定要反作废该合同?', {
|
||||
icon: 3,
|
||||
title: '提示'
|
||||
}, function(index) {
|
||||
tool.post("/contract/api/purchase_tovoid", {id: purchase_id,void_status:status}, eventCallback);
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
})
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,9 @@
|
||||
<div>
|
||||
<div id="logList" class="log-timeline p-3"></div>
|
||||
</div>
|
||||
<script>
|
||||
function log(){
|
||||
let oaEdit = layui.oaEdit;
|
||||
oaEdit.log('logList','Purchase',purchase_id);
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,36 @@
|
||||
<tr>
|
||||
<td colspan="6"><strong>物品信息</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<table class="layui-table layui-table-min" style="margin:0">
|
||||
<tr>
|
||||
<th width="200">物品名称</th>
|
||||
<th width="100">单位</th>
|
||||
<th width="100">规格</th>
|
||||
<th width="100">采购单价</th>
|
||||
<th width="100">数量</th>
|
||||
<th width="100">小计</th>
|
||||
<th>备注信息</th>
|
||||
</tr>
|
||||
{empty name="$detail.content_array"}
|
||||
<tr class="sale-tr">
|
||||
<td colspan="7" style="padding:12px; text-align:center; color:#999">暂无物品信息</td>
|
||||
</tr>
|
||||
{else/}
|
||||
{volist name="$detail.content_array" id="vo"}
|
||||
<tr class="sale-tr">
|
||||
<td style="text-align:left;">{$vo.purchased_title|default=''}</td>
|
||||
<td>{$vo.purchased_unit|default=''}</td>
|
||||
<td>{$vo.purchased_specs|default=''}</td>
|
||||
<td>{$vo.purchased_price|default='0.00'}</td>
|
||||
<td>{$vo.purchased_num|default='1'}</td>
|
||||
<td>{$vo.purchased_subtotal|default='0.00'}</td>
|
||||
<td style="text-align:left;">{$vo.purchased_remark|default=''}</td>
|
||||
</tr>
|
||||
{/volist}
|
||||
{/empty}
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
<tr>
|
||||
<td class="layui-td-gray" colspan="6" style="text-align:left; color:#666"><strong>服务信息</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<table class="layui-table layui-table-min" style="margin:0">
|
||||
<tr>
|
||||
<th width="200">服务名称</th>
|
||||
<th width="200">服务周期</th>
|
||||
<th width="100">服务单价</th>
|
||||
<th width="100">服务次数</th>
|
||||
<th width="100">小计</th>
|
||||
<th>备注信息</th>
|
||||
</tr>
|
||||
{empty name="$detail.content_array"}
|
||||
<tr class="sale-tr">
|
||||
<td colspan="6" style="padding:12px text-align:center; color:#999">暂无服务信息</td>
|
||||
</tr>
|
||||
{else/}
|
||||
{volist name="$detail.content_array" id="vo"}
|
||||
<tr class="sale-tr">
|
||||
<td style="text-align:left;">{$vo.service_title|default=''}</td>
|
||||
<td>{$vo.service_date|default=''}</td>
|
||||
<td>{$vo.service_price|default='0.00'}</td>
|
||||
<td>{$vo.service_num|default='1'}</td>
|
||||
<td>{$vo.service_subtotal|default='0.00'}</td>
|
||||
<td style="text-align:left;">{$vo.service_remark|default=''}</td>
|
||||
</tr>
|
||||
{/volist}
|
||||
{/empty}
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -0,0 +1,177 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="body"}
|
||||
|
||||
<div class="p-page">
|
||||
<div class="layui-card border-x border-t" style="margin-bottom:0; box-shadow:0 0 0 0 rgb(5 32 96 / 0%)">
|
||||
<div class="body-table layui-tab layui-tab-brief" lay-filter="tab">
|
||||
<ul class="layui-tab-title">
|
||||
<li><a href="/contract/contract/voidlist">销售合同</a></li>
|
||||
<li class="layui-this"><a href="/contract/purchase/voidlist">采购合同</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<form class="layui-form gg-form-bar border-x">
|
||||
<div class="layui-input-inline" style="width:122px;">
|
||||
<select name="types">
|
||||
<option value="">选择合同性质</option>
|
||||
<option value="1">普通采购</option>
|
||||
<option value="2">物品采购</option>
|
||||
<option value="3">服务采购</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:122px;">
|
||||
<select name="cate_id">
|
||||
<option value="">选择合同类别</option>
|
||||
{volist name=":get_base_data('ContractCate');" id="vo"}
|
||||
<option value="{$vo.id}">{$vo.title}</option>
|
||||
{/volist}
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:175px;">
|
||||
<input type="text" class="layui-input" id="sign_time" placeholder="选择合同签订日期" readonly name="sign_time">
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:175px;">
|
||||
<input type="text" class="layui-input" id="end_time" placeholder="选择合同到期日期" readonly name="end_time">
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:220px;">
|
||||
<input type="text" name="keywords" placeholder="输入关键字,合同编号/合同名称" class="layui-input" autocomplete="off" />
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width:150px">
|
||||
<input type="hidden" name="tab" value="0" />
|
||||
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="table-search"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
|
||||
<button type="reset" class="layui-btn layui-btn-reset" lay-filter="table-reset">清空</button>
|
||||
</div>
|
||||
</form>
|
||||
<table class="layui-hide" id="table_contract" lay-filter="table_contract"></table>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<div class="layui-btn-container">
|
||||
<h3>作废合同</h3>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool','tablePlus','laydatePlus'];
|
||||
function gouguInit() {
|
||||
var table = layui.tablePlus,dropdown = layui.dropdown, tool = layui.tool,laydatePlus = layui.laydatePlus;
|
||||
//日期范围
|
||||
var sign_time = new laydatePlus({'target':'sign_time'});
|
||||
var end_time = new laydatePlus({'target':'end_time'});
|
||||
layui.pageTable = table.render({
|
||||
elem: "#table_contract"
|
||||
, toolbar: "#toolbarDemo"
|
||||
,url: "/contract/purchase/voidlist"
|
||||
,is_excel: true
|
||||
,page: true
|
||||
,limit: 20
|
||||
,cellMinWidth: 60
|
||||
,height: 'full-154'
|
||||
,cols: [[ //表头
|
||||
{
|
||||
field: 'id',
|
||||
title: 'ID号',
|
||||
align: 'center',
|
||||
width: 80
|
||||
},{
|
||||
field: 'code',
|
||||
title: '合同编号',
|
||||
align: 'center',
|
||||
width: 150
|
||||
},{
|
||||
field: 'name',
|
||||
title: '合同名称',
|
||||
minWidth:240,
|
||||
templet: '<div><a data-href="/contract/purchase/view/id/{{d.id}}.html" class="side-a">{{d.name}}</a></div>'
|
||||
},{
|
||||
field: 'cate_title',
|
||||
title: '合同类别',
|
||||
align: 'center',
|
||||
width: 100
|
||||
},{
|
||||
field: 'types_name',
|
||||
title: '合同性质',
|
||||
align: 'center',
|
||||
width: 80,
|
||||
templet: function (d) {
|
||||
var html = '<span class="layui-color-' + d.types + '">' + d.types_name + '</span>';
|
||||
return html;
|
||||
}
|
||||
},{
|
||||
field: 'interval_time',
|
||||
title: '合同有效时间',
|
||||
align: 'center',
|
||||
width: 268,
|
||||
templet: function (d) {
|
||||
var html = d.interval_time;
|
||||
if (d.delay > 0 && d.delay < 30) {
|
||||
html += '<span class="red ml-1" style="font-size:12px;">' + d.delay + '天后到期</span>';
|
||||
}
|
||||
if (d.delay == 0) {
|
||||
html += '<span class="red ml-1" style="font-size:12px;">已过期</span>';
|
||||
}
|
||||
return html;
|
||||
}
|
||||
},{
|
||||
field: 'cost',
|
||||
title: '合同金额(元)',
|
||||
align: 'right',
|
||||
width: 100
|
||||
},{
|
||||
field: 'void_name',
|
||||
title: '作废人',
|
||||
align: 'center',
|
||||
width: 80
|
||||
},{
|
||||
field: 'void_time',
|
||||
title: '作废日期',
|
||||
align: 'center',
|
||||
width: 90
|
||||
},{
|
||||
field: 'sign_name',
|
||||
title: '签定人',
|
||||
align: 'center',
|
||||
width: 80
|
||||
},{
|
||||
field: 'sign_time',
|
||||
title: '签订日期',
|
||||
align: 'center',
|
||||
width: 90
|
||||
},{
|
||||
field: 'keeper_name',
|
||||
title: '保管人',
|
||||
align: 'center',
|
||||
width: 80
|
||||
},{
|
||||
field: 'right',
|
||||
fixed:'right',
|
||||
title: '操作',
|
||||
width: 60,
|
||||
align: 'center',
|
||||
ignoreExport:true,
|
||||
templet: function (d) {
|
||||
var btn0='<span class="layui-btn layui-btn-normal layui-btn-xs" lay-event="view">详情</span>';
|
||||
return btn0;
|
||||
}
|
||||
}
|
||||
]]
|
||||
});
|
||||
|
||||
table.on('tool(table_contract)',function (obj) {
|
||||
var checkStatus = table.checkStatus(obj.config.id); //获取选中行状态
|
||||
var data = obj.data;
|
||||
if (obj.event === 'view') {
|
||||
tool.side("/contract/purchase/view?id="+data.id);
|
||||
return;
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
Reference in New Issue
Block a user