| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255 |
- {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;}
- .layui-card-tips {color: #969696;}
- .layui-card-value {padding: 4px 0 16px;font-size: 18px;color: #1E9FFF;}
- .content-content{line-height:1.6;}
- .content-content p{margin-bottom:6px;}
- .content-content img{max-width:100%; padding:8px; box-sizing: border-box;}
- .log-item i{font-weight:800; color:#323232}
- .log-content strong{margin:0 4px; color:#323232}
- .layui-unselect dl {max-height:188px;}
- .layui-table td.table-content img{max-width:100%; height:auto;}
- </style>
- {/block}
- {block name="body"}
- <div class="p-page">
- <h3 class="pb-3">任务详情</h3>
- <table class="layui-table layui-table-form" id="task">
- <tr>
- <td class="layui-td-gray">任务主题</td>
- <td colspan="3" class="click-edit" data-types="text" data-field="title">{$detail.title|default=''}</td>
- <td class="layui-td-gray">工作类型</td>
- <td class="click-edit" data-types="picker" data-field="work_id" data-type="1" data-picker="workcate">{$detail.cate_name|default='-'}</td>
- </tr>
- <tr>
- <td class="layui-td-gray">负责人员</td>
- <td class="click-edit" data-types="adminpicker" data-field="director_uid" data-type="1" data-ids="{$detail.director_uid}" data-names="{$detail.director_name|default=''}">{$detail.director_name|default=''}</td>
- <td class="layui-td-gray">协作人</td>
- <td colspan="3" class="click-edit" data-types="adminpicker" data-field="assist_admin_ids" data-type="2" data-ids="{$detail.assist_admin_ids}" data-names="{$detail.assist_admin_names|default=''}">{$detail.assist_admin_names|default=''}</td>
- </tr>
- <tr>
- <td class="layui-td-gray">优先级</td>
- <td class="click-edit" data-types="dropdown" data-field="priority" data-array="priority" data-text="{$detail.priority}">{$detail.priority_name}</td>
- <td class="layui-td-gray">关联项目</td>
- <td colspan="3" class="click-edit" data-types="picker" data-field="project_id" data-type="1" data-picker="project">{$detail.project_name|default='-'}</td>
- </tr>
- <tr>
- <td class="layui-td-gray">完成进度</td>
- <td class="click-edit" data-types="num" data-field="done_ratio" data-text="{$detail.done_ratio}" data-min="0" data-max="100">{$detail.done_ratio|default='0'}%</td>
- <td class="layui-td-gray">估计结束日期</td>
- <td class="click-edit" data-types="oadate" data-field="end_time">{$detail.end_time|date='Y-m-d'}</span>{gt name="$detail.delay" value="0"}<span class="red">『逾期 {$detail.delay}天』</span>{/gt}</td>
- <td class="layui-td-gray-3">估计工作量(工时)</td>
- <td class="click-edit" data-types="num" data-field="plan_hours">{$detail.plan_hours|default=''}</td>
- </tr>
- <tr>
- <td class="layui-td-gray">任务状态</td>
- <td class="click-edit" data-types="dropdown" data-field="status" data-array="status" data-text="{$detail.status}">{$detail.status_name}</td>
- <td class="layui-td-gray-2">实际完成日期</td>
- <td>{eq name="$detail.over_time" value="0"}-{else/}{$detail.over_time|date='Y-m-d'}{/eq}</td>
- <td class="layui-td-gray">实际工时</td>
- <td>{eq name="$detail.work_hours" value="0"}-{else/}{$detail.work_hours}{/eq}</td>
- </tr>
- <tr>
- <td class="layui-td-gray">相关附件 <button type="button" class="layui-btn layui-btn-xs" id="uploadBtn">附件上传</button></td>
- <td colspan="5">
- <div class="layui-row" id="uploadBox">
- <input type="hidden" data-type="file" name="file_ids" value="{$detail.file_ids|default=''}">
- {notempty name="$file_array"}
- {volist name="$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" class="click-edit" data-types="editor" data-field="content" data-target="content" style="background-color:#FAFAFA;"><strong>任务描述</strong></td>
- </tr>
- <tr>
- <td colspan="6" id="content" class="table-content">{$detail.content|raw}</td>
- </tr>
- </table>
-
- <div class="layui-tab layui-tab-card" style="margin:0;" lay-filter="docDemoTabBrief">
- <ul class="layui-tab-title">
- <li class="layui-this">工作记录({$detail.schedules})</li>
- <li>员工评论(<span id="commentTotal">0</span>)</li>
- <li>操作日志(<span id="logListTotal">0</span>)</li>
- </ul>
- <div class="layui-tab-content py-1 px-3" style="background-color:#fff;">
- <div class="layui-tab-item layui-show py-2">
- <table class="layui-hide" id="table_work" lay-filter="table_work"></table>
- </div>
- <div class="layui-tab-item comment-list">
- <div class="comment-input my-2">
- <input type="text" id="commentInput" readonly placeholder="发表一下你的看法" class="layui-input" value="">
- </div>
- <div id="commentBox"></div>
- </div>
- <div class="layui-tab-item logs-list">
- <div id="logList" class="log-timeline p-3"></div>
- </div>
- </div>
- </div>
- </div>
- <script type="text/html" id="toolbarDemo">
- <div>
- <div class="layui-input-inline" style="margin-right:12px;"><strong>工作日志</strong></div><div class="layui-input-inline"><button class="layui-btn layui-btn-xs" type="button" lay-event="add">+ 添加工作日志</button></div>
- </div>
- </script>
- {/block}
- <!-- /主体 -->
- <!-- 脚本 -->
- {block name="script"}
- <script>
- const admin_id = '{$detail.admin_id}';
- const detail_id = '{$detail.id}';
- const status_array = {:json_encode(get_task_status(1),JSON_UNESCAPED_UNICODE)};
- const priority_array = {:json_encode(get_priority(1),JSON_UNESCAPED_UNICODE)};
- const moduleInit = ['tool','oaPicker','oaEdit','oaSchedule','oaComment','uploadPlus'];
- function gouguInit() {
- const oaEdit = layui.oaEdit,work = layui.oaSchedule,comment = layui.oaComment, uploadPlus = layui.uploadPlus, tool = layui.tool, table = layui.table;
-
- oaEdit.log('logList','Task',detail_id);
-
- comment.init({
- "box":'commentBox',//容器id
- "input": 'commentInput',
- "topic_id":detail_id,
- "module": 'task',
- });
-
- let edit_callback = function(e){
- layer.msg(e.msg);
- if(e.code==0){
- setTimeout(function(){
- location.reload();
- },1000)
- }
- }
- //附件上传
- var attachment = new uploadPlus({
- "target":'uploadBtn',
- "targetBox":'uploadBox',
- "attachment":{
- "type":1,//0ajax多文件模式,1ajax单文件单记录模式
- "uidDelete":true,//是否开启只有上传人自己才能删除自己的附件
- "ajaxSave":function(res){
- tool.post('/project/api/add_file',{'topic_id':detail_id,'file_id':res.data.id,'file_name': res.data.name, 'module': 'task'},edit_callback);
- },
- "ajaxDelete":function(file_id){
- tool.delete('/project/api/delete_file', {id: file_id}, edit_callback);
- }
- }
- });
-
- //快捷编辑
- oaEdit.init({
- box:'task',
- id:detail_id,
- url: "/project/task/add",
- dropdown:{
- status:status_array,
- priority:priority_array
- }
- });
-
- //工作记录相关
- layui.scheduleTable = table.render({
- elem: "#table_work"
- , toolbar: "#toolbarDemo"
- ,url: "/oa/api/get_schedule"
- ,page: true
- ,limit: 20
- ,where:{task_id:detail_id}
- ,cellMinWidth: 80
- ,cols: [[
- {field:'id',width:80, title: 'ID号', align:'center'}
- ,{field:'title',title: '工作内容',minWidth:240}
- ,{field: 'name', title: '所属人员', align:'center',width:80}
- ,{field: 'start_time', title: '工作时间范围', align:'center',width:260,templet:function(d){
- var html=d.start_time+' 至 '+d.end_time;
- return html;
- }}
- ,{field: 'labor_type_string', title: '工作类型', align:'center',width:80}
- ,{field: 'labor_time', title: '工时', align:'center',width:80}
- ,{field:'create_time', title: '创建时间',width:150,align:'center'}
- ,{width:90,fixed:'right',title: '操作', align:'center',ignoreExport:true,templet: function(d){
- var html='';
- var btn1='<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="view">详细</a>';
- if(d.admin_id !== login_admin){
- return btn1;
- }
- else{
- var btn2='<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>';
- html = '<div class="layui-btn-group">'+btn1+btn2+'</div>';
- return html;
- }
- }}
- ]]
- });
-
- table.on('toolbar(table_work)',function (obj) {
- if (obj.event === 'add') {
- work.add(detail_id,{'id':0});
- }
- });
- table.on('tool(table_work)',function (obj) {
- var checkStatus = table.checkStatus(obj.config.id); //获取选中行状态
- var data = obj.data;
- if (obj.event === 'view') {
- work.view(data);
- return;
- }
- if (obj.event === 'edit') {
- work.add(data.task_id,data);
- 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("/project/task/del", { id: data.id }, callback);
- layer.close(index);
- });
- return;
- }
- });
-
- //工作记录相关
- $('.add-schedule').on('click', function () {
- work.add(detail_id,{'id':0});
- })
- //回复
- $('#comment_task_' + detail_id).on('click', '[data-event="replay"]', function () {
- let pid = $(this).data('id');
- let to_uid = $(this).data('uid');
- let to_unames = $(this).data('unames');
- comment.textarea(0,detail_id,'task','',pid,to_uid,to_unames);
- })
- //编辑
- $('#comment_task_' + detail_id).on('click', '[data-event="edit"]', function () {
- let id = $(this).data('id');
- let content = $('#comment_' + id).data('content');
- comment.textarea(id, detail_id, 'task', content,0,0,'');
- })
- //删除
- $('#comment_task_' + detail_id).on('click', '[data-event="del"]', function () {
- let id = $(this).data('id');
- comment.del(id, detail_id, 'task');
- })
- }
- </script>
- {/block}
|