diff --git a/app/finance/model/Expense.php b/app/finance/model/Expense.php index 00e4ae8..2a45768 100644 --- a/app/finance/model/Expense.php +++ b/app/finance/model/Expense.php @@ -63,6 +63,12 @@ class Expense extends Model } else{ $expense['pay_time'] = '-'; + } + if ($expense['ptid'] > 0) { + $expense['ptname'] = Db::name('Project')->where(['id' => $expense['ptid']])->value('name'); + } + else{ + $expense['ptname'] = ''; } $expense['list'] = Db::name('ExpenseInterfix') ->field('a.*,c.title as cate_title') diff --git a/app/finance/view/expense/add.html b/app/finance/view/expense/add.html index 85e4b76..54964c7 100644 --- a/app/finance/view/expense/add.html +++ b/app/finance/view/expense/add.html @@ -41,6 +41,13 @@ + + 关联的项目 + + + + + 报销选项* @@ -124,6 +131,13 @@ + + 关联的项目 + + + + + 报销选项* @@ -242,11 +256,7 @@ Array.prototype.remove = function (val) { const moduleInit = ['tool','employeepicker']; function gouguInit() { - var form = layui.form, - upload = layui.upload, - tool=layui.tool, - employeepicker = layui.employeepicker, - laydate = layui.laydate; + var form = layui.form,upload = layui.upload,tool=layui.tool,table=layui.table,employeepicker = layui.employeepicker,laydate = layui.laydate; laydate.render({ elem: '#income_month', @@ -305,6 +315,58 @@ const moduleInit = ['tool','employeepicker']; } }); + //选择关联项目 + $('.project-picker').on('click', function () { + selectProject(); + }); + var projectTable; + function selectProject() { + layer.open({ + title: '选择项目', + area: ['600px', '580px'], + type: 1, + content: '
\ +
\ +
\ + \ +
\ + \ +
\ +
', + success: function () { + projectTable = table.render({ + elem: '#projectTable' + , url: '/project/api/get_project' + , page: true //开启分页 + , limit: 10 + , cols: [[ + { type: 'radio', title: '选择' } + , { field: 'id', width: 100, title: '编号', align: 'center' } + , { field: 'title', title: '项目名称' } + ]] + }); + }, + btn: ['确定'], + yes: function () { + var checkStatus = table.checkStatus(projectTable.config.id); + var data = checkStatus.data; + if (data.length > 0) { + $('[name="ptname"]').val(data[0].title); + $('[name="ptid"]').val(data[0].id); + layer.closeAll(); + } + else { + layer.msg('请先选择项目'); + return false; + } + } + }) + } + //项目搜索提交 + form.on('submit(search_form)', function (data) { + projectTable.reload({ where: { keywords: data.field.keywords }, page: { curr: 1 } }); + return false; + }); //监听提交 form.on('submit(webform)', function(data){ diff --git a/app/finance/view/expense/view.html b/app/finance/view/expense/view.html index 92698dc..0e6fb19 100644 --- a/app/finance/view/expense/view.html +++ b/app/finance/view/expense/view.html @@ -66,6 +66,12 @@ 原始单据日期 {$detail.expense_time} + {if condition="$detail.ptid > 0"} + + 关联的项目 + {$detail.ptname} + + {/if} 报销人 {$detail.create_user} diff --git a/app/project/controller/Api.php b/app/project/controller/Api.php index a1be7d7..7325cbc 100644 --- a/app/project/controller/Api.php +++ b/app/project/controller/Api.php @@ -522,10 +522,24 @@ class Api extends BaseController //获取项目列表 public function get_project() { - $where = []; - $where[] = ['delete_time', '=', 0]; - $project = Db::name('Project')->field('id,name as title')->where($where)->select(); - return to_assign(0, '', $project); + $param = get_params(); + $project_ids = Db::name('ProjectUser')->where(['uid' => $this->uid, 'delete_time' => 0])->column('project_id'); + $rows = empty($param['limit']) ? get_config('app.page_size') : $param['limit']; + + $auth = isAuth($this->uid,'contract_admin'); + $where = []; + $where[] = ['delete_time', '=', 0]; + if(isset($param['keywords'])){ + $where[] = ['name', 'like', '%'.$param['keywords'].'%']; + } + if($auth == 0){ + $where[] = ['id', 'in', $project_ids]; + } + $list = ProjectList::field('id,name as title') + ->where($where) + ->order('id desc') + ->paginate($rows, false, ['query' => $param]); + return table_assign(0, '', $list); } //编辑阶段 diff --git a/app/project/view/task/view.html b/app/project/view/task/view.html index 00be45d..d345ca7 100644 --- a/app/project/view/task/view.html +++ b/app/project/view/task/view.html @@ -370,12 +370,7 @@ } if (name == "project_id") { if (admin_id == login_user) { - loading = true; - tool.get("/project/api/get_project", {}, function (res) { - let data = res.data; - loading = false; - edit.dropdown(id, name, real_txt, data, editPost, 1); - }); + edit.select_table(id, name, real_txt, "/project/api/get_project", editPost, 1); } else { layer.msg('您没权限修改,请联系创建人或负责人修改'); } diff --git a/public/static/assets/gougu/module/oaEdit.js b/public/static/assets/gougu/module/oaEdit.js index 82f121a..ec61582 100644 --- a/public/static/assets/gougu/module/oaEdit.js +++ b/public/static/assets/gougu/module/oaEdit.js @@ -1,10 +1,11 @@ layui.define(['tool','employeepicker','tinymce'], function (exports) { - const table = layui.table; - const laydate = layui.laydate; - const dropdown = layui.dropdown; - const employeepicker = layui.employeepicker; - const tinymce = layui.tinymce; - const obj = { + let form = layui.form; + let table = layui.table; + let laydate = layui.laydate; + let dropdown = layui.dropdown; + let employeepicker = layui.employeepicker; + let tinymce = layui.tinymce; + let obj = { //文本 text: function (id, name, real_txt, editPost) { let that = this; @@ -79,6 +80,54 @@ layui.define(['tool','employeepicker','tinymce'], function (exports) { } }); }, + //ajax表格单选 + select_table: function (id, name, real_val, url, editPost) { + let that = this; + let selectTable; + layer.open({ + title: '请选择', + area: ['600px', '580px'], + type: 1, + content: '
\ +
\ +
\ + \ +
\ + \ +
\ +
', + success: function () { + selectTable = table.render({ + elem: '#selectTable' + , url: url + , page: true //开启分页 + , limit: 10 + , cols: [[ + { type: 'radio', title: '选择' } + , { field: 'id', width: 100, title: '编号', align: 'center' } + , { field: 'title', title: '项目名称' } + ]] + }); + //项目搜索提交 + form.on('submit(search_form)', function (data) { + selectTable.reload({ where: { keywords: data.field.keywords }, page: { curr: 1 } }); + return false; + }); + }, + btn: ['确定'], + yes: function () { + var checkStatus = table.checkStatus(selectTable.config.id); + var data = checkStatus.data; + if (data.length > 0) { + editPost(id, name, data[0].title, data[0].id); + } + else { + layer.msg('请选择'); + return false; + } + } + }) + }, //表格单选 select_type: function (id, name, real_val, data, editPost) { let that = this;