新增项目时可关联合同
This commit is contained in:
parent
0c14f6c281
commit
db20c9b795
@ -37,7 +37,7 @@ class Api extends BaseController
|
||||
}
|
||||
$rows = empty($param['limit']) ? get_config('app.page_size') : $param['limit'];
|
||||
$list = Db::name('Contract')
|
||||
->field('id,name,sign_uid,sign_time')
|
||||
->field('id,name,customer_id,sign_uid,sign_time')
|
||||
->order('end_time asc')
|
||||
->where($where)
|
||||
->where(function ($query) use($whereOr) {
|
||||
|
@ -299,6 +299,7 @@ function gouguInit() {
|
||||
});
|
||||
},
|
||||
btn: ['确定'],
|
||||
btnAlign: 'c',
|
||||
yes: function () {
|
||||
var checkStatus = table.checkStatus(contractTable.config.id);
|
||||
var data = checkStatus.data;
|
||||
|
@ -36,6 +36,10 @@ class Project extends Model
|
||||
$detail['users'] = Db::name('ProjectUser')->where(['delete_time' => 0,'project_id'=>$id])->count();
|
||||
$detail['comments'] = Db::name('ProjectComment')->where([['module','=','project'],['topic_id','=',$detail['id']],['delete_time','=',0]])->count();
|
||||
$detail['logs'] = Db::name('ProjectLog')->where(['module' => 'project', 'project_id' => $detail['id']])->count();
|
||||
$detail['contract']='';
|
||||
if($detail['contract_id']>0){
|
||||
$detail['contract'] = Db::name('Contract')->where(['id' => $detail['contract_id']])->value('name');
|
||||
}
|
||||
}
|
||||
return $detail;
|
||||
}
|
||||
|
@ -22,10 +22,12 @@ class ProjectLog extends Model
|
||||
'end_time' => array('icon' => 'icon-kaoshijihua', 'title' => '预计结束时间'),
|
||||
'name' => array('icon' => 'icon-wodedianping', 'title' => '标题'),
|
||||
'status' => array('icon' => 'icon-wodedianping', 'title' => '状态'),
|
||||
'content' => array('icon' => 'icon-wodedianping', 'title' => '项目描述'),
|
||||
'file' => array('icon' => 'icon-sucaiziyuan', 'title' => '项目文件'),
|
||||
'link' => array('icon' => 'icon-sucaiziyuan', 'title' => '项目链接'),
|
||||
'user' => array('icon' => 'icon-xueshengzhuce', 'title' => '项目成员'),
|
||||
'content' => array('icon' => 'icon-wodedianping', 'title' => '描述'),
|
||||
'file' => array('icon' => 'icon-sucaiziyuan', 'title' => '文件'),
|
||||
'contract_id' => array('icon' => 'icon-hetongguanli', 'title' => '合同'),
|
||||
'customer_id' => array('icon' => 'icon-jiaoshiguanli', 'title' => '客户'),
|
||||
'link' => array('icon' => 'icon-sucaiziyuan', 'title' => '链接'),
|
||||
'user' => array('icon' => 'icon-xueshengzhuce', 'title' => '成员'),
|
||||
'new' => array('icon' => 'icon-zidingyishezhi', 'title' => '项目'),
|
||||
'delete' => array('icon' => 'icon-shanchu', 'title' => '项目'),
|
||||
]],
|
||||
@ -174,6 +176,9 @@ class ProjectLog extends Model
|
||||
if ($v['old_content'] == '') {
|
||||
$v['old_content'] = '未设置';
|
||||
}
|
||||
else{
|
||||
$v['old_content'] = date('Y-m-d', (int) $v['old_content']);
|
||||
}
|
||||
$v['new_content'] = date('Y-m-d', (int) $v['new_content']);
|
||||
}
|
||||
if (strpos($v['field'], '_uid') !== false) {
|
||||
@ -190,6 +195,14 @@ class ProjectLog extends Model
|
||||
if ($v['field'] == 'cate') {
|
||||
$v['old_content'] = Db::name('WorkCate')->where(['id' => $v['old_content']])->value('title');
|
||||
$v['new_content'] = Db::name('WorkCate')->where(['id' => $v['new_content']])->value('title');
|
||||
}
|
||||
if ($v['field'] == 'contract_id') {
|
||||
$v['old_content'] = Db::name('Contract')->where(['id' => $v['old_content']])->value('name');
|
||||
$v['new_content'] = Db::name('Contract')->where(['id' => $v['new_content']])->value('name');
|
||||
}
|
||||
if ($v['field'] == 'customer_id') {
|
||||
$v['old_content'] = Db::name('Customer')->where(['id' => $v['old_content']])->value('name');
|
||||
$v['new_content'] = Db::name('Customer')->where(['id' => $v['new_content']])->value('name');
|
||||
}
|
||||
if ($v['field'] == 'done_ratio') {
|
||||
$v['old_content'] = $v['old_content'] . '%';
|
||||
|
@ -40,6 +40,16 @@
|
||||
<input type="hidden" id="team_admin_ids" name="team_admin_ids" class="layui-input" value="">
|
||||
</td>
|
||||
</tr>
|
||||
{gt name=":isModule('contract')" value="0"}
|
||||
<tr>
|
||||
<td class="layui-td-gray">关联合同</td>
|
||||
<td colspan="8">
|
||||
<input type="text" class="layui-input contract-picker" name="contract_name" placeholder="请选择需要关联的合同" readonly value="">
|
||||
<input type="hidden" class="layui-input" name="contract_id" value="0">
|
||||
<input type="hidden" class="layui-input" name="customer_id" value="0">
|
||||
</td>
|
||||
</tr>
|
||||
{/gt}
|
||||
<tr>
|
||||
<td class="layui-td-gray">项目简介<span style="color: red">*</span></td>
|
||||
<td colspan="3">
|
||||
@ -135,7 +145,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div style="padding: 10px 0">
|
||||
<div class="pt-3">
|
||||
<input type="hidden" name="id" value="0" />
|
||||
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即提交</button>
|
||||
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
|
||||
@ -149,7 +159,7 @@
|
||||
<script>
|
||||
const moduleInit = ['tool','employeepicker'];
|
||||
function gouguInit() {
|
||||
var form = layui.form,tool = layui.tool,laydate = layui.laydate,employeepicker = layui.employeepicker;
|
||||
var form = layui.form,tool = layui.tool,table = layui.table,laydate = layui.laydate,employeepicker = layui.employeepicker;
|
||||
//日期范围
|
||||
laydate.render({
|
||||
elem: '#date',
|
||||
@ -164,6 +174,61 @@
|
||||
trigger: 'click'
|
||||
});
|
||||
});
|
||||
|
||||
//选择关联合同
|
||||
$('.contract-picker').on('click', function () {
|
||||
contractProject();
|
||||
});
|
||||
var contractTable;
|
||||
function contractProject() {
|
||||
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="contractTable"></div></div>',
|
||||
success: function () {
|
||||
contractTable = table.render({
|
||||
elem: '#contractTable'
|
||||
, url: '/contract/api/get_contract'
|
||||
, page: true //开启分页
|
||||
, limit: 10
|
||||
, cols: [[
|
||||
{ type: 'radio', title: '选择' }
|
||||
, { field: 'id', width: 100, title: '编号', align: 'center' }
|
||||
, { field: 'name', title: '合同名称' }
|
||||
]]
|
||||
});
|
||||
//项目搜索提交
|
||||
form.on('submit(search_form)', function (data) {
|
||||
contractTable.reload({ where: { keywords: data.field.keywords }, page: { curr: 1 } });
|
||||
return false;
|
||||
});
|
||||
},
|
||||
btn: ['确定'],
|
||||
btnAlign: 'c',
|
||||
yes: function () {
|
||||
var checkStatus = table.checkStatus(contractTable.config.id);
|
||||
var data = checkStatus.data;
|
||||
if (data.length > 0) {
|
||||
$('[name="contract_name"]').val(data[0].name);
|
||||
$('[name="contract_id"]').val(data[0].id);
|
||||
$('[name="customer_id"]').val(data[0].customer_id);
|
||||
layer.closeAll();
|
||||
}
|
||||
else {
|
||||
layer.msg('请先选择合同');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
$('.add-flow').on('click',function(){
|
||||
|
@ -24,6 +24,12 @@
|
||||
<td class="layui-td-gray">项目成员</td>
|
||||
<td colspan="3">{$detail.team_admin_names}</td>
|
||||
</tr>
|
||||
{gt name="$detail.contract_id" value="0"}
|
||||
<tr>
|
||||
<td class="layui-td-gray">关联合同</td>
|
||||
<td colspan="3">{$detail.contract}</td>
|
||||
</tr>
|
||||
{/gt}
|
||||
<tr>
|
||||
<td class="layui-td-gray">项目简介</td>
|
||||
<td colspan="3">{$detail.content}</td>
|
||||
|
@ -15,6 +15,11 @@
|
||||
<i class="iconfont icon-wodedianping" title="修改计划开始日期" data-name="start_time"></i> 至 <span id="end_time_{$detail.id}"
|
||||
data-val="">{$detail.end_time_str}</span><i class="iconfont icon-wodedianping"
|
||||
title="修改计划结束日期" data-name="end_time"></i>
|
||||
{gt name=":isModule('contract')" value="0"}
|
||||
<span class="gray" style="margin-left:32px">关联合同:</span>
|
||||
<span id="content_{$detail.id}" data-val="{$detail.contract_id}">{$detail.contract}</span>
|
||||
<i class="iconfont icon-wodedianping" title="编辑" data-id="{$detail.id}" data-name="contract_id"></i>
|
||||
{/gt}
|
||||
</div>
|
||||
<div class="py-1">
|
||||
<span class="gray">项目简介:</span>
|
||||
@ -257,7 +262,7 @@
|
||||
</div>
|
||||
<script>
|
||||
function overview(){
|
||||
let form = layui.form,tool = layui.tool, comment = layui.oaComment, edit = layui.oaEdit,upload = layui.upload;
|
||||
let form = layui.form,tool = layui.tool,table = layui.table, comment = layui.oaComment, edit = layui.oaEdit,upload = layui.upload;
|
||||
$('.hover-edit').hover(function () {
|
||||
$(this).addClass('hover-on');
|
||||
}, function () {
|
||||
@ -309,6 +314,62 @@ function overview(){
|
||||
if (name == "content") {
|
||||
edit.textarea(id, name, real_txt, editPost);
|
||||
}
|
||||
if (name == "contract_id") {
|
||||
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="contractTable"></div></div>',
|
||||
success: function () {
|
||||
contractTable = table.render({
|
||||
elem: '#contractTable'
|
||||
, url: '/contract/api/get_contract'
|
||||
, page: true //开启分页
|
||||
, limit: 10
|
||||
, cols: [[
|
||||
{ type: 'radio', title: '选择' }
|
||||
, { field: 'id', width: 100, title: '编号', align: 'center' }
|
||||
, { field: 'name', title: '合同名称' }
|
||||
]]
|
||||
});
|
||||
//项目搜索提交
|
||||
form.on('submit(search_form)', function (data) {
|
||||
contractTable.reload({ where: { keywords: data.field.keywords }, page: { curr: 1 } });
|
||||
return false;
|
||||
});
|
||||
},
|
||||
btn: ['确定'],
|
||||
btnAlign: 'c',
|
||||
yes: function () {
|
||||
var checkStatus = table.checkStatus(contractTable.config.id);
|
||||
var data = checkStatus.data;
|
||||
if (data.length > 0) {
|
||||
let callback = function (e) {
|
||||
layer.closeAll();
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
setTimeout(function () {
|
||||
location.reload();
|
||||
}, 1000)
|
||||
}
|
||||
}
|
||||
let postData = { id: id, contract_id:data[0].id, customer_id:data[0].customer_id };
|
||||
tool.post("/project/index/edit", postData, callback);
|
||||
}
|
||||
else {
|
||||
layer.msg('请先选择合同');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
$('#delProject').on('click', function () {
|
||||
|
Loading…
x
Reference in New Issue
Block a user