优化合同选择归属关联客户操作,优化合同上传附件操作

This commit is contained in:
hdm 2022-11-19 18:34:04 +08:00
parent 9d73589893
commit b4775245d1
9 changed files with 317 additions and 268 deletions

View File

@ -264,6 +264,15 @@ class Index extends BaseController
$is_create_admin = 1; $is_create_admin = 1;
} }
$file_array_other = Db::name('ContractFile')
->field('cf.id,f.filepath,f.name,f.filesize,f.fileext')
->alias('cf')
->join('File f', 'f.id = cf.file_id', 'LEFT')
->order('cf.create_time asc')
->where(array('cf.contract_id' => $id, 'cf.delete_time' => 0))
->select()->toArray();
$detail['file_array_other'] = $file_array_other;
$check_record = Db::name('FlowRecord')->field('f.*,a.name,a.thumb') $check_record = Db::name('FlowRecord')->field('f.*,a.name,a.thumb')
->alias('f') ->alias('f')
->join('Admin a', 'a.id = f.check_user_id', 'left') ->join('Admin a', 'a.id = f.check_user_id', 'left')
@ -283,6 +292,7 @@ class Index extends BaseController
$vv['status_str'] = '撤销'; $vv['status_str'] = '撤销';
} }
} }
View::assign('is_check_admin', $is_check_admin); View::assign('is_check_admin', $is_check_admin);
View::assign('is_create_admin', $is_create_admin); View::assign('is_create_admin', $is_create_admin);
View::assign('check_record', $check_record); View::assign('check_record', $check_record);

View File

@ -78,14 +78,6 @@ class Contract extends Model
{ {
$detail = self::where(['id' => $id])->find(); $detail = self::where(['id' => $id])->find();
if (!empty($detail)) { if (!empty($detail)) {
$file_array = Db::name('ContractFile')
->field('cf.id,f.filepath,f.name,f.filesize,f.fileext')
->alias('cf')
->join('File f', 'f.id = cf.file_id', 'LEFT')
->order('cf.create_time asc')
->where(array('cf.contract_id' => $id, 'cf.delete_time' => 0))
->select()->toArray();
$detail['status_name'] = self::$Status[(int) $detail['check_status']]; $detail['status_name'] = self::$Status[(int) $detail['check_status']];
$detail['archive_status_name'] = self::$ArchiveStatus[(int) $detail['archive_status']]; $detail['archive_status_name'] = self::$ArchiveStatus[(int) $detail['archive_status']];
$detail['sign_time'] = date('Y-m-d', $detail['sign_time']); $detail['sign_time'] = date('Y-m-d', $detail['sign_time']);
@ -125,7 +117,11 @@ class Contract extends Model
if($detail['pid']>0){ if($detail['pid']>0){
$detail['pname'] = self::where(['id' => $detail['pid']])->value('name'); $detail['pname'] = self::where(['id' => $detail['pid']])->value('name');
} }
$detail['file_array'] = $file_array;
if($detail['file_ids'] !=''){
$fileArray = Db::name('File')->where('id','in',$detail['file_ids'])->select();
$detail['fileArray'] = $fileArray;
}
} }
return $detail; return $detail;
} }

View File

@ -45,6 +45,7 @@ class ContractLog extends Model
'check_status' => '状态', 'check_status' => '状态',
'status' => '状态', 'status' => '状态',
'archive_status' => '归档状态', 'archive_status' => '归档状态',
'file_ids' => '合同附件',
'file' => '合同附件', 'file' => '合同附件',
'remark' => '备注信息', 'remark' => '备注信息',
'new' => '新增', 'new' => '新增',

View File

@ -111,35 +111,47 @@
<tr> <tr>
<td class="layui-td-gray-2">合同签订人<font>*</font></td> <td class="layui-td-gray-2">合同签订人<font>*</font></td>
<td> <td>
<input type="text" name="sign_name" autocomplete="off" readonly placeholder="请选择合同签订人" class="layui-input"> <div class="layui-input-inline" style="width:50%;">
<input type="hidden" name="sign_uid" lay-verify="required" lay-reqText="请选择合同签订人"> <input type="text" name="sign_name" autocomplete="off" readonly lay-verify="required" lay-reqText="请选择合同签订人" placeholder="请选择合同签订人" class="layui-input">
</div>
<div class="layui-input-inline gray" style="width:42%;" id="sign_department"></div>
<input type="hidden" name="sign_uid">
<input type="hidden" name="sign_did"> <input type="hidden" name="sign_did">
</td> </td>
<td class="layui-td-gray-2">合同签订时间<font>*</font></td> <td class="layui-td-gray-2">合同签订时间<font>*</font></td>
<td> <td>
<input type="text" name="sign_time" readonly lay-verify="required" lay-reqText="请选择合同签订日期" placeholder="请选择合同签订日期" class="layui-input select-time"> <input type="text" name="sign_time" readonly lay-verify="required" lay-reqText="请选择合同签订日期" placeholder="请选择合同签订日期" class="layui-input select-time">
</td> </td>
<td class="layui-td-gray-2">合同签订部门</td>
<td>
<input type="text" name="sign_department" autocomplete="off" readonly class="layui-input">
</td>
</tr>
<tr>
<td class="layui-td-gray-2">合同制定人<font>*</font></td> <td class="layui-td-gray-2">合同制定人<font>*</font></td>
<td> <td>
<input type="text" name="prepared_name" autocomplete="off" readonly placeholder="请选择合同制定人" class="layui-input picker-one"> <input type="text" name="prepared_name" autocomplete="off" readonly placeholder="请选择合同制定人" class="layui-input picker-one">
<input type="hidden" name="prepared_uid" lay-verify="required" lay-reqText="请选择合同制定人"> <input type="hidden" name="prepared_uid" lay-verify="required" lay-reqText="请选择合同制定人">
</td> </td>
</tr>
<tr>
<td class="layui-td-gray-2">合同保管人<font>*</font></td> <td class="layui-td-gray-2">合同保管人<font>*</font></td>
<td> <td>
<input type="text" name="keeper_name" autocomplete="off" readonly placeholder="请选择合同保管人" class="layui-input picker-one"> <input type="text" name="keeper_name" autocomplete="off" readonly placeholder="请选择合同保管人" class="layui-input picker-one">
<input type="hidden" name="keeper_uid" lay-verify="required" lay-reqText="请选择合同保管人"> <input type="hidden" name="keeper_uid" lay-verify="required" lay-reqText="请选择合同保管人">
</td> </td>
<td class="layui-td-gray">合同共享人员</td> <td class="layui-td-gray">合同共享人员</td>
<td> <td colspan="3">
<input type="text" name="share_names" autocomplete="off" readonly placeholder="请选择共享人员" class="layui-input picker-more"> <input type="text" name="share_names" autocomplete="off" readonly placeholder="请选择共享人员" class="layui-input picker-more">
<input type="hidden" name="share_ids"> <input type="hidden" name="share_ids">
</td> </td>
</tr>
<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" style="line-height:inherit">
<div class="layui-row" id="fileBox">
<input type="hidden" id="fileBoxInput" name="file_ids" value="">
</div>
</td>
</tr> </tr>
<tr> <tr>
<td colspan="6"><strong>备注信息</strong></td> <td colspan="6"><strong>备注信息</strong></td>
@ -162,9 +174,9 @@
<!-- 脚本 --> <!-- 脚本 -->
{block name="script"} {block name="script"}
<script> <script>
const moduleInit = ['tool','employeepicker']; const moduleInit = ['tool','employeepicker','oaTool'];
function gouguInit() { function gouguInit() {
var form = layui.form,tool=layui.tool,table = layui.table,laydate = layui.laydate,employeepicker = layui.employeepicker; var form = layui.form,tool=layui.tool,table = layui.table,laydate = layui.laydate,oaTool = layui.oaTool, employeepicker = layui.employeepicker;
//日期 //日期
lay('.select-time').each(function () { lay('.select-time').each(function () {
laydate.render({ laydate.render({
@ -173,6 +185,22 @@
}); });
}); });
//相关附件上传
oaTool.addFile();
//选择关联的客户
$('.customer-picker').on('click', function () {
let that = $(this);
let callback = function(data){
$('[name="customer_id"]').val(data.id);
$('[name="customer"]').val(data.name);
$('[name="customer_name"]').val(data.contact_name);
$('[name="customer_mobile"]').val(data.contact_mobile);
$('[name="customer_address"]').val(data.address);
}
oaTool.customerPicker(callback);
});
//选择合同签订人弹窗 //选择合同签订人弹窗
$('body').on('click','[name="sign_name"]',function () { $('body').on('click','[name="sign_name"]',function () {
var ids=$('[name="sign_uid"]').val(),names=$('[name="sign_name"]').val(); var ids=$('[name="sign_uid"]').val(),names=$('[name="sign_name"]').val();
@ -186,7 +214,7 @@
$('[name="sign_uid"]').val(ids); $('[name="sign_uid"]').val(ids);
$('[name="sign_name"]').val(names); $('[name="sign_name"]').val(names);
$('[name="sign_did"]').val(dids); $('[name="sign_did"]').val(dids);
$('[name="sign_department"]').val(departments); $('#sign_department').html('部门:'+departments);
} }
}); });
}); });
@ -223,63 +251,6 @@
tool.post("/contract/index/add", data.field, callback); tool.post("/contract/index/add", data.field, callback);
return false; return false;
}); });
//选择关联的客户
$('.customer-picker').on('click', function () {
selectCustomer();
});
var customeTable;
function selectCustomer() {
layer.open({
title: '选择客户',
area: ['600px', '580px'],
type: 1,
content: '<div class="picker-table">\
<form class="layui-form pb-2">\
<div class="layui-input-inline" style="width:480px;">\
<input type="text" name="keywords" placeholder="客户名称" class="layui-input" autocomplete="off" />\
</div>\
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="search_form">提交搜索</button>\
</form>\
<div id="customerTable"></div></div>',
success: function () {
customeTable = table.render({
elem: '#customerTable'
, url: '/contract/api/get_customer'
, page: true //开启分页
, limit: 10
, cols: [[
{ type: 'radio', title: '选择' }
, { field: 'id', width: 100, title: '编号', align: 'center' }
, { field: 'name', title: '客户名称' }
]]
});
},
btn: ['确定'],
yes: function () {
var checkStatus = table.checkStatus(customeTable.config.id);
var data = checkStatus.data;
if (data.length > 0) {
$('[name="customer_id"]').val(data[0].id);
$('[name="customer"]').val(data[0].name);
$('[name="customer_name"]').val(data[0].contact_name);
$('[name="customer_mobile"]').val(data[0].contact_mobile);
$('[name="customer_address"]').val(data[0].address);
layer.closeAll();
}
else {
layer.msg('请先选择客户');
return false;
}
}
})
}
//客户搜索提交
form.on('submit(search_form)', function (data) {
customeTable.reload({ where: { keywords: data.field.keywords }, page: { curr: 1 } });
return false;
});
} }
</script> </script>
{/block} {/block}

View File

@ -102,35 +102,61 @@
<tr> <tr>
<td class="layui-td-gray-2">合同签订人<font>*</font></td> <td class="layui-td-gray-2">合同签订人<font>*</font></td>
<td> <td>
<input type="text" name="sign_name" value="{$detail.sign_name}" autocomplete="off" readonly placeholder="请选择合同签订人" class="layui-input"> <div class="layui-input-inline" style="width:50%;">
<input type="hidden" name="sign_uid" value="{$detail.sign_uid}" lay-verify="required" lay-reqText="请选择合同签订人"> <input type="text" name="sign_name" value="{$detail.sign_name}" autocomplete="off" readonly lay-verify="required" lay-reqText="请选择合同签订人" placeholder="请选择合同签订人" class="layui-input">
</div>
<div class="layui-input-inline gray" style="width:42%;" id="sign_department">部门:{$detail.sign_department}</div>
<input type="hidden" name="sign_uid" value="{$detail.sign_uid}">
<input type="hidden" name="sign_did" value="{$detail.sign_did}"> <input type="hidden" name="sign_did" value="{$detail.sign_did}">
</td> </td>
<td class="layui-td-gray-2">合同签订时间<font>*</font></td> <td class="layui-td-gray-2">合同签订时间<font>*</font></td>
<td> <td>
<input type="text" name="sign_time" value="{$detail.sign_time}" readonly lay-verify="required" lay-reqText="请选择合同签订日期" placeholder="请选择合同签订日期" class="layui-input select-time"> <input type="text" name="sign_time" value="{$detail.sign_time}" readonly lay-verify="required" lay-reqText="请选择合同签订日期" placeholder="请选择合同签订日期" class="layui-input select-time">
</td> </td>
<td class="layui-td-gray-2">合同签订部门</td>
<td>
<input type="text" name="sign_department" value="{$detail.sign_department}" autocomplete="off" readonly class="layui-input">
</td>
</tr>
<tr>
<td class="layui-td-gray-2">合同制定人<font>*</font></td> <td class="layui-td-gray-2">合同制定人<font>*</font></td>
<td> <td>
<input type="text" name="prepared_name" value="{$detail.prepared_name}" autocomplete="off" readonly placeholder="请选择合同制定人" class="layui-input picker-one"> <input type="text" name="prepared_name" value="{$detail.prepared_name}" autocomplete="off" readonly placeholder="请选择合同制定人" class="layui-input picker-one">
<input type="hidden" name="prepared_uid" value="{$detail.prepared_uid}" lay-verify="required" lay-reqText="请选择合同制定人"> <input type="hidden" name="prepared_uid" value="{$detail.prepared_uid}" lay-verify="required" lay-reqText="请选择合同制定人">
</td> </td>
</tr>
<tr>
<td class="layui-td-gray-2">合同保管人<font>*</font></td> <td class="layui-td-gray-2">合同保管人<font>*</font></td>
<td> <td>
<input type="text" name="keeper_name" value="{$detail.keeper_name}" autocomplete="off" readonly placeholder="请选择合同保管人" class="layui-input picker-one"> <input type="text" name="keeper_name" value="{$detail.keeper_name}" autocomplete="off" readonly placeholder="请选择合同保管人" class="layui-input picker-one">
<input type="hidden" name="keeper_uid" value="{$detail.keeper_uid}" lay-verify="required" lay-reqText="请选择合同保管人"> <input type="hidden" name="keeper_uid" value="{$detail.keeper_uid}" lay-verify="required" lay-reqText="请选择合同保管人">
</td> </td>
<td class="layui-td-gray">合同共享人员</td> <td class="layui-td-gray">合同共享人员</td>
<td> <td colspan="3">
<input type="text" name="share_names" value="{$detail.share_names}" autocomplete="off" readonly placeholder="请选择共享人员" class="layui-input picker-more"> <input type="text" name="share_names" value="{$detail.share_names}" autocomplete="off" readonly placeholder="请选择共享人员" class="layui-input picker-more">
<input type="hidden" name="share_ids" value="{$detail.share_ids}"> <input type="hidden" name="share_ids" value="{$detail.share_ids}">
</td> </td>
</tr>
<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" style="line-height:inherit">
<div class="layui-row" id="fileBox">
<input type="hidden" id="fileBoxInput" name="file_ids" value="{$detail.file_ids}">
{notempty name="$detail.file_ids"}
{volist name="$detail.fileArray" id="vo"}
<div class="layui-col-md4" id="fileItem{$vo.id}">
<div class="file-card">
<i class="file-icon iconfont icon-renwuguanli"></i>
<div class="file-title">{$vo.name}</div>
<div class="file-tool">
<a href="{$vo.filepath}" download="{$vo.name}" target="_blank" title="下载查看"><i class="iconfont icon-shujudaoru blue"></i></a>
<i class="btn-delete iconfont icon-shanchu red" data-id="{$vo.id}" title="删除"></i>
</div>
</div>
</div>
{/volist}
{/notempty}
</div>
</td>
</tr> </tr>
<tr> <tr>
<td colspan="6"><strong>备注信息</strong></td> <td colspan="6"><strong>备注信息</strong></td>
@ -154,9 +180,9 @@
<!-- 脚本 --> <!-- 脚本 -->
{block name="script"} {block name="script"}
<script> <script>
const moduleInit = ['tool','employeepicker']; const moduleInit = ['tool','employeepicker','oaTool'];
function gouguInit() { function gouguInit() {
var form = layui.form,tool=layui.tool,table = layui.table,laydate = layui.laydate,employeepicker = layui.employeepicker; var form = layui.form,tool=layui.tool,table = layui.table,laydate = layui.laydate,oaTool = layui.oaTool, employeepicker = layui.employeepicker;
//日期 //日期
lay('.select-time').each(function () { lay('.select-time').each(function () {
laydate.render({ laydate.render({
@ -165,6 +191,22 @@
}); });
}); });
//相关附件上传
oaTool.addFile();
//选择关联的客户
$('.customer-picker').on('click', function () {
let that = $(this);
let callback = function(data){
$('[name="customer_id"]').val(data.id);
$('[name="customer"]').val(data.name);
$('[name="customer_name"]').val(data.contact_name);
$('[name="customer_mobile"]').val(data.contact_mobile);
$('[name="customer_address"]').val(data.address);
}
oaTool.customerPicker(callback);
});
//选择合同签订人弹窗 //选择合同签订人弹窗
$('body').on('click','[name="sign_name"]',function () { $('body').on('click','[name="sign_name"]',function () {
var ids=$('[name="sign_uid"]').val(),names=$('[name="sign_name"]').val(); var ids=$('[name="sign_uid"]').val(),names=$('[name="sign_name"]').val();

View File

@ -140,21 +140,44 @@ html{background-color:#fff;}
<td colspan="7">{$detail.remark}</td> <td colspan="7">{$detail.remark}</td>
</tr> </tr>
{/notempty} {/notempty}
{notempty name="$detail.file_ids"}
<tr>
<td class="layui-td-gray">相关附件</td>
<td colspan="7" style="line-height:inherit">
<div class="layui-row">
{volist name="$detail.fileArray" id="vo"}
<div class="layui-col-md4">
<div class="file-card">
<i class="file-icon iconfont icon-renwuguanli"></i>
<div class="file-title file-title-view">{$vo.name}</div>
<div class="file-tool">
<a href="{$vo.filepath}" download="{$vo.name}" target="_blank" title="下载查看"><i class="iconfont icon-shujudaoru blue"></i></a>
</div>
</div>
</div>
{/volist}
</div>
</td>
</tr>
{/notempty}
<tr>
<td colspan="8"><strong>补充附件</strong></td>
</tr>
<tr> <tr>
<td class="layui-td-gray"> <td class="layui-td-gray">
<div class="layui-input-inline">合同附件</div> <button type="button" class="layui-btn layui-btn-sm" id="uploadBtn"><i class="layui-icon"></i>附件上传</button>
{eq name="$detail.check_status" value="1" }<div class="layui-input-inline"><button type="button" class="layui-btn layui-btn-xs" id="upFile"><i class="layui-icon"></i></button></div>{/eq}
</td> </td>
<td colspan="7" style="line-height:inherit"> <td colspan="7" style="line-height:inherit">
<div id="fileList"> <div id="fileBox">
{volist name="$detail.file_array" id="vo"} <input type="hidden" id="fileBoxInput" name="file_ids" value="">
<div class="layui-col-md4" id="file_{$vo.id}"> {volist name="$detail.file_array_other" id="vo"}
<div class="layui-col-md4" id="fileItem{$vo.id}">
<div class="file-card"> <div class="file-card">
<i class="file-icon iconfont icon-renwuguanli"></i> <i class="file-icon iconfont icon-renwuguanli"></i>
<div class="file-title">{$vo.name}</div> <div class="file-title">{$vo.name}</div>
<div class="file-tool"> <div class="file-tool">
<a href="{$vo.filepath}" download="{$vo.name}" title="下载查看" target="_blank"><i class="iconfont icon-shujudaoru blue"></i></a> <a href="{$vo.filepath}" download="{$vo.name}" title="下载查看" target="_blank"><i class="iconfont icon-shujudaoru blue"></i></a>
<i class="btn-delete iconfont icon-shanchu red" data-id="{$vo.id}" title="删除"></i> <i class="ajax-delete iconfont icon-shanchu red" data-id="{$vo.id}" title="删除"></i>
</div> </div>
</div> </div>
</div> </div>
@ -252,7 +275,7 @@ html{background-color:#fff;}
{eq name="$detail.check_status" value="1" } {eq name="$detail.check_status" value="1" }
{include file="/index/view_step" /} {include file="/index/view_step" /}
{/eq} {/eq}
<div class="py-4"> <div class="pt-3">
{gt name="$auth" value="0"} {gt name="$auth" value="0"}
{eq name="$detail.check_status" value="2" } {eq name="$detail.check_status" value="2" }
{eq name="$detail.archive_status" value="1" } {eq name="$detail.archive_status" value="1" }
@ -296,9 +319,9 @@ html{background-color:#fff;}
<script> <script>
const contract_id = '{$detail.id}'; const contract_id = '{$detail.id}';
const contract_status = '{$detail.check_status}'; const contract_status = '{$detail.check_status}';
const moduleInit = ['tool','employeepicker']; const moduleInit = ['tool','employeepicker','oaTool'];
function gouguInit() { function gouguInit() {
var form = layui.form,tool=layui.tool, upload = layui.upload,element = layui.element,employeepicker = layui.employeepicker; var form = layui.form,tool=layui.tool, upload = layui.upload,element = layui.element,employeepicker = layui.employeepicker,oaTool = layui.oaTool;
element.on('tab(contract)', function(data){ element.on('tab(contract)', function(data){
let index = data.index; let index = data.index;
if(index == 1){ if(index == 1){
@ -436,54 +459,24 @@ const moduleInit = ['tool','employeepicker'];
}); });
}) })
oaTool.addFile({
type:1,
//删除附件 isSave:true,
$('#fileList').on('click', '.btn-delete', function () { ajaxDelete:function(file_id){
var _id = $(this).data('id');
layer.confirm('确定要删除该附件吗?', {
icon: 3,
title: '提示'
}, function(index) {
let callback = function (e) { let callback = function (e) {
layer.msg(e.msg); layer.msg(e.msg);
if (e.code == 0) { if (e.code == 0) {
$('#file_' + _id).remove(); $('#fileItem' + file_id).remove();
} }
} }
tool.delete("/contract/api/delete_file", {id: _id}, callback); tool.delete("/contract/api/delete_file", {id: file_id}, callback);
layer.close(index); },
}); ajaxSave:function(res){
})
//多附件上传
upload.render({
elem: '#upFile'
,url: "/api/index/upload"
,multiple: true
,accept: 'file' //普通文件
,exts: 'png|jpg|gif|jpeg|doc|docx|ppt|pptx|xls|xlsx|pdf|txt|zip|rar|7z' //只允许上传文件格式
,done: function(res){
if (res.code == 0) {
let callback = function (e) { let callback = function (e) {
layer.msg(e.msg); location.reload();
let temp = `<div class="layui-col-md4" id="file_${e.data}">
<div class="file-card">
<i class="file-icon iconfont icon-renwuguanli"></i>
<div class="file-title">${res.data.name}</div>
<div class="file-tool">
<a href="${res.data.filepath}" download="${res.data.name}" title="下载查看" target="_blank"><i class="iconfont icon-shujudaoru blue"></i></a>
<i class="btn-delete iconfont icon-shanchu red" data-id="${e.data}" title="删除"></i>
</div>
</div>
</div>`;
$('#fileList').append(temp);
} }
tool.post("/contract/api/add_file", {'contract_id':contract_id,'file_id':res.data.id,'file_name':res.data.name}, callback); tool.post("/contract/api/add_file", {'contract_id':contract_id,'file_id':res.data.id,'file_name':res.data.name}, callback);
} }
else{
layer.msg(res.msg);
}
}
}); });
} }

View File

@ -140,21 +140,18 @@ html{background-color:#fff;}
<td colspan="7">{$detail.remark}</td> <td colspan="7">{$detail.remark}</td>
</tr> </tr>
{/notempty} {/notempty}
{notempty name="$detail.file_ids"}
<tr> <tr>
<td class="layui-td-gray"> <td class="layui-td-gray">相关附件</td>
<div class="layui-input-inline">合同附件</div>
{eq name="$detail.check_status" value="1" }<div class="layui-input-inline"><button type="button" class="layui-btn layui-btn-xs" id="upFile"><i class="layui-icon"></i></button></div>{/eq}
</td>
<td colspan="7" style="line-height:inherit"> <td colspan="7" style="line-height:inherit">
<div id="fileList"> <div class="layui-row">
{volist name="$detail.file_array" id="vo"} {volist name="$detail.fileArray" id="vo"}
<div class="layui-col-md4" id="file_{$vo.id}"> <div class="layui-col-md4">
<div class="file-card"> <div class="file-card">
<i class="file-icon iconfont icon-renwuguanli"></i> <i class="file-icon iconfont icon-renwuguanli"></i>
<div class="file-title">{$vo.name}</div> <div class="file-title file-title-view">{$vo.name}</div>
<div class="file-tool"> <div class="file-tool">
<a href="{$vo.filepath}" download="{$vo.name}" title="下载查看" target="_blank"><i class="iconfont icon-shujudaoru blue"></i></a> <a href="{$vo.filepath}" download="{$vo.name}" target="_blank" title="下载查看"><i class="iconfont icon-shujudaoru blue"></i></a>
<i class="btn-delete iconfont icon-shanchu red" data-id="{$vo.id}" title="删除"></i>
</div> </div>
</div> </div>
</div> </div>
@ -162,6 +159,7 @@ html{background-color:#fff;}
</div> </div>
</td> </td>
</tr> </tr>
{/notempty}
<tr> <tr>
<td colspan="8"><strong>签订信息</strong></td> <td colspan="8"><strong>签订信息</strong></td>
</tr> </tr>
@ -235,7 +233,7 @@ html{background-color:#fff;}
</tr> </tr>
{/eq} {/eq}
</table> </table>
<div class="py-4"> <div class="pt-3">
{eq name="$is_create_admin" value = "1"} {eq name="$is_create_admin" value = "1"}
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">提交审核</button> <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">提交审核</button>
<a class="layui-btn" href="/contract/index/add/id/{$detail.id}">编辑合同</a> <a class="layui-btn" href="/contract/index/add/id/{$detail.id}">编辑合同</a>
@ -455,55 +453,6 @@ const moduleInit = ['tool','employeepicker'];
} }
}); });
}); });
//删除附件
$('#fileList').on('click', '.btn-delete', function () {
var _id = $(this).data('id');
layer.confirm('确定要删除该附件吗?', {
icon: 3,
title: '提示'
}, function(index) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
$('#file_' + _id).remove();
}
}
tool.delete("/contract/api/delete_file", {id: _id}, callback);
layer.close(index);
});
})
//多附件上传
upload.render({
elem: '#upFile'
,url: "/api/index/upload"
,multiple: true
,accept: 'file' //普通文件
,exts: 'png|jpg|gif|jpeg|doc|docx|ppt|pptx|xls|xlsx|pdf|txt|zip|rar|7z' //只允许上传文件格式
,done: function(res){
if (res.code == 0) {
let callback = function (e) {
layer.msg(e.msg);
let temp = `<div class="layui-col-md4" id="file_${e.data}">
<div class="file-card">
<i class="file-icon iconfont icon-renwuguanli"></i>
<div class="file-title">${res.data.name}</div>
<div class="file-tool">
<a href="${res.data.filepath}" download="${res.data.name}" title="下载查看" target="_blank"><i class="iconfont icon-shujudaoru blue"></i></a>
<i class="btn-delete layui-icon layui-icon-delete" data-id="${e.data}" style="color: #FF5722;" title="删除"></i>
</div>
</div>
</div>`;
$('#fileList').append(temp);
}
tool.post("/contract/api/add_file", {'contract_id':contract_id,'file_id':res.data.id,'file_name':res.data.name}, callback);
}
else{
layer.msg(res.msg);
}
}
});
} }
</script> </script>

View File

@ -1581,6 +1581,7 @@ CREATE TABLE `oa_contract` (
`sign_uid` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '合同签订人', `sign_uid` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '合同签订人',
`keeper_uid` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '合同保管人', `keeper_uid` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '合同保管人',
`share_ids` varchar(500) NOT NULL DEFAULT '' COMMENT '共享人员,如:1,2,3', `share_ids` varchar(500) NOT NULL DEFAULT '' COMMENT '共享人员,如:1,2,3',
`file_ids` varchar(500) NOT NULL DEFAULT '' COMMENT '相关附件,如:1,2,3',
`sign_time` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '合同签订时间', `sign_time` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '合同签订时间',
`sign_did` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '合同签订部门', `sign_did` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '合同签订部门',
`cost` decimal(15, 2) NOT NULL DEFAULT 0.00 COMMENT '合同金额', `cost` decimal(15, 2) NOT NULL DEFAULT 0.00 COMMENT '合同金额',

View File

@ -21,6 +21,7 @@ layui.define(['tool'], function (exports) {
addFile: function (options) { addFile: function (options) {
let that = this; let that = this;
let settings = { let settings = {
type:0,
btn: 'uploadBtn', btn: 'uploadBtn',
box: 'fileBox', box: 'fileBox',
url: "/api/index/upload", url: "/api/index/upload",
@ -28,10 +29,12 @@ layui.define(['tool'], function (exports) {
exts: 'png|jpg|gif|jpeg|doc|docx|ppt|pptx|xls|xlsx|pdf|zip|rar|7z', //只允许上传文件格式 exts: 'png|jpg|gif|jpeg|doc|docx|ppt|pptx|xls|xlsx|pdf|zip|rar|7z', //只允许上传文件格式
colmd:4, colmd:4,
isSave:false, isSave:false,
ajaxSave:function(val){} ajaxSave:function(val){},
ajaxDelete:function(val){}
}; };
let opts = $.extend({}, settings, options); let opts = $.extend({}, settings, options);
if(opts.type==0){
//虚拟删除 //虚拟删除
$('#'+opts.box).on('click', '.btn-delete', function () { $('#'+opts.box).on('click', '.btn-delete', function () {
let file_id = $(this).data('id'); let file_id = $(this).data('id');
@ -62,6 +65,22 @@ layui.define(['tool'], function (exports) {
layer.close(index); layer.close(index);
}); });
}) })
}
if(opts.type==1){
//ajax删除
$('#'+opts.box).on('click', '.ajax-delete', function () {
let file_id = $(this).data('id');
layer.confirm('确定删除该附件吗?', {
icon: 3,
title: '提示'
}, function(index) {
if (typeof (opts.ajaxSave) == "function") {
opts.ajaxDelete(file_id);
}
layer.close(index);
});
})
}
//多附件上传 //多附件上传
upload.render({ upload.render({
@ -74,6 +93,7 @@ layui.define(['tool'], function (exports) {
layer.msg(res.msg); layer.msg(res.msg);
if (res.code == 0) { if (res.code == 0) {
//上传成功 //上传成功
if(opts.type==0){
let idsStr = $('#'+opts.box+'Input').val(),idsArray = []; let idsStr = $('#'+opts.box+'Input').val(),idsArray = [];
if (idsStr != '') { if (idsStr != '') {
idsArray = idsStr.split(","); idsArray = idsStr.split(",");
@ -96,9 +116,63 @@ layui.define(['tool'], function (exports) {
opts.ajaxSave(idsArray.join(',')); opts.ajaxSave(idsArray.join(','));
} }
} }
if(opts.type==1){
if (typeof (opts.ajaxSave) == "function" && opts.isSave ==true) {
opts.ajaxSave(res);
}
}
}
} }
}); });
}, },
customerPicker:function(callback){
var customeTable;
layer.open({
title: '选择客户',
area: ['600px', '580px'],
type: 1,
content: '<div class="picker-table">\
<form class="layui-form pb-2">\
<div class="layui-input-inline" style="width:480px;">\
<input type="text" name="keywords" placeholder="客户名称" class="layui-input" autocomplete="off" />\
</div>\
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="search_customer">提交搜索</button>\
</form>\
<div id="customerTable"></div></div>',
success: function () {
customeTable = table.render({
elem: '#customerTable'
, url: '/contract/api/get_customer'
, page: true //开启分页
, limit: 10
, cols: [[
{ type: 'radio', title: '选择' }
, { field: 'id', width: 100, title: '编号', align: 'center' }
, { field: 'name', title: '客户名称' }
]]
});
//客户搜索提交
form.on('submit(search_customer)', function (data) {
customeTable.reload({ where: { keywords: data.field.keywords }, page: { curr: 1 } });
return false;
});
},
btn: ['确定'],
btnAlign: 'c',
yes: function () {
var checkStatus = table.checkStatus(customeTable.config.id);
var data = checkStatus.data;
if (data.length > 0) {
callback(data[0]);
layer.closeAll();
}
else {
layer.msg('请先选择客户');
return false;
}
}
})
},
contractPicker:function(callback){ contractPicker:function(callback){
var contractTable; var contractTable;
layer.open({ layer.open({
@ -110,7 +184,7 @@ layui.define(['tool'], function (exports) {
<div class="layui-input-inline" style="width:480px;">\ <div class="layui-input-inline" style="width:480px;">\
<input type="text" name="keywords" placeholder="合同名称" class="layui-input" autocomplete="off" />\ <input type="text" name="keywords" placeholder="合同名称" class="layui-input" autocomplete="off" />\
</div>\ </div>\
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="search_form">提交搜索</button>\ <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="search_contract">提交搜索</button>\
</form>\ </form>\
<div id="contractTable"></div></div>', <div id="contractTable"></div></div>',
success: function () { success: function () {
@ -126,7 +200,7 @@ layui.define(['tool'], function (exports) {
]] ]]
}); });
//项目搜索提交 //项目搜索提交
form.on('submit(search_form)', function (data) { form.on('submit(search_contract)', function (data) {
contractTable.reload({ where: { keywords: data.field.keywords }, page: { curr: 1 } }); contractTable.reload({ where: { keywords: data.field.keywords }, page: { curr: 1 } });
return false; return false;
}); });
@ -149,12 +223,24 @@ layui.define(['tool'], function (exports) {
} }
}; };
//选择客户
$('body').on('click','.picker-customer',function () {
let that = $(this);
let callback = function(data){
that.val(data.name);
that.next.val(data.id);
}
obj.customerPicker(callback);
});
//选择合同 //选择合同
$('body').on('click','.picker-contract',function () { $('body').on('click','.picker-contract',function () {
let that = $(this); let that = $(this);
let callback = function(data){ let callback = function(data){
that.val(data[0].name); that.val(data.name);
that.next.val(data[0].id); that.next.val(data.id);
} }
obj.contractPicker(callback); obj.contractPicker(callback);
}); });